(function(f){"function"===typeof define&&define.amd?define(["jquery"],f):f(jQuery)})(function(f){var y=!1,D=!1,N=0,O=2E3,x=0,H=["webkit","ms","moz","o"],s=window.requestAnimationFrame||!1,t=window.cancelAnimationFrame||!1;if(!s)for(var P in H){var E=H[P];s||(s=window[E+"RequestAnimationFrame"]);t||(t=window[E+"CancelAnimationFrame"]||window[E+"CancelRequestAnimationFrame"])}var v=window.MutationObserver||window.WebKitMutationObserver||!1,I={zindex:"auto",cursoropacitymin:0,cursoropacitymax:1,cursorcolor:"#424242", cursorwidth:"5px",cursorborder:"1px solid #fff",cursorborderradius:"5px",scrollspeed:60,mousescrollstep:24,touchbehavior:!1,hwacceleration:!0,usetransition:!0,boxzoom:!1,dblclickzoom:!0,gesturezoom:!0,grabcursorenabled:!0,autohidemode:!0,background:"",iframeautoresize:!0,cursorminheight:32,preservenativescrolling:!0,railoffset:!1,railhoffset:!1,bouncescroll:!0,spacebarenabled:!0,railpadding:{top:0,right:0,left:0,bottom:0},disableoutline:!0,horizrailenabled:!0,railalign:"right",railvalign:"bottom", enabletranslate3d:!0,enablemousewheel:!0,enablekeyboard:!0,smoothscroll:!0,sensitiverail:!0,enablemouselockapi:!0,cursorfixedheight:!1,directionlockdeadzone:6,hidecursordelay:400,nativeparentscrolling:!0,enablescrollonselection:!0,overflowx:!0,overflowy:!0,cursordragspeed:.3,rtlmode:"auto",cursordragontouch:!1,oneaxismousemode:"auto",scriptpath:function(){var f=document.getElementsByTagName("script"),f=f[f.length-1].src.split("?")[0];return 0d?a.getScrollLeft()>=a.page.maxw:0>=a.getScrollLeft())&&(e=d,d=0));d&&(a.scrollmom&&a.scrollmom.stop(),a.lastdeltax+=d,a.debounced("mousewheelx",function(){var b=a.lastdeltax;a.lastdeltax=0;a.rail.drag||a.doScrollLeftBy(b)},15));if(e){if(a.opt.nativeparentscrolling&&c&&!a.ispage&&!a.zoomactive)if(0>e){if(a.getScrollTop()>=a.page.maxh)return!0}else if(0>=a.getScrollTop())return!0;a.scrollmom&&a.scrollmom.stop();a.lastdeltay+=e;a.debounced("mousewheely", function(){var b=a.lastdeltay;a.lastdeltay=0;a.rail.drag||a.doScrollBy(b)},15)}b.stopImmediatePropagation();return b.preventDefault()}var a=this;this.version="3.6.0";this.name="nicescroll";this.me=c;this.opt={doc:f("body"),win:!1};f.extend(this.opt,I);this.opt.snapbackspeed=80;if(k)for(var G in a.opt)"undefined"!=typeof k[G]&&(a.opt[G]=k[G]);this.iddoc=(this.doc=a.opt.doc)&&this.doc[0]?this.doc[0].id||"":"";this.ispage=/^BODY|HTML/.test(a.opt.win?a.opt.win[0].nodeName:this.doc[0].nodeName);this.haswrapper= !1!==a.opt.win;this.win=a.opt.win||(this.ispage?f(window):this.doc);this.docscroll=this.ispage&&!this.haswrapper?f(window):this.win;this.body=f("body");this.iframe=this.isfixed=this.viewport=!1;this.isiframe="IFRAME"==this.doc[0].nodeName&&"IFRAME"==this.win[0].nodeName;this.istextarea="TEXTAREA"==this.win[0].nodeName;this.forcescreen=!1;this.canshowonmouseevent="scroll"!=a.opt.autohidemode;this.page=this.view=this.onzoomout=this.onzoomin=this.onscrollcancel=this.onscrollend=this.onscrollstart=this.onclick= this.ongesturezoom=this.onkeypress=this.onmousewheel=this.onmousemove=this.onmouseup=this.onmousedown=!1;this.scroll={x:0,y:0};this.scrollratio={x:0,y:0};this.cursorheight=20;this.scrollvaluemax=0;this.isrtlmode="auto"==this.opt.rtlmode?"rtl"==(this.win[0]==window?this.body:this.win).css("direction"):!0===this.opt.rtlmode;this.observerbody=this.observerremover=this.observer=this.scrollmom=this.scrollrunning=!1;do this.id="ascrail"+O++;while(document.getElementById(this.id));this.hasmousefocus=this.hasfocus= this.zoomactive=this.zoom=this.selectiondrag=this.cursorfreezed=this.cursor=this.rail=!1;this.visibility=!0;this.hidden=this.locked=this.railslocked=!1;this.cursoractive=!0;this.wheelprevented=!1;this.overflowx=a.opt.overflowx;this.overflowy=a.opt.overflowy;this.nativescrollingarea=!1;this.checkarea=0;this.events=[];this.saved={};this.delaylist={};this.synclist={};this.lastdeltay=this.lastdeltax=0;this.detected=Q();var e=f.extend({},this.detected);this.ishwscroll=(this.canhwscroll=e.hastransform&& a.opt.hwacceleration)&&a.haswrapper;this.hasreversehr=this.isrtlmode&&!e.iswebkit;this.istouchcapable=!1;!e.cantouch||e.isios||e.isandroid||!e.iswebkit&&!e.ismozilla||(this.istouchcapable=!0,e.cantouch=!1);a.opt.enablemouselockapi||(e.hasmousecapture=!1,e.haspointerlock=!1);this.debounced=function(b,g,c){var d=a.delaylist[b];a.delaylist[b]=g;d||setTimeout(function(){var g=a.delaylist[b];a.delaylist[b]=!1;g.call(a)},c)};var r=!1;this.synched=function(b,g){a.synclist[b]=g;(function(){r||(s(function(){r= !1;for(var b in a.synclist){var g=a.synclist[b];g&&g.call(a);a.synclist[b]=!1}}),r=!0)})();return b};this.unsynched=function(b){a.synclist[b]&&(a.synclist[b]=!1)};this.css=function(b,g){for(var c in g)a.saved.css.push([b,c,b.css(c)]),b.css(c,g[c])};this.scrollTop=function(b){return"undefined"==typeof b?a.getScrollTop():a.setScrollTop(b)};this.scrollLeft=function(b){return"undefined"==typeof b?a.getScrollLeft():a.setScrollLeft(b)};var A=function(a,g,c,d,e,f,h){this.st=a;this.ed=g;this.spd=c;this.p1= d||0;this.p2=e||1;this.p3=f||0;this.p4=h||1;this.ts=(new Date).getTime();this.df=this.ed-this.st};A.prototype={B2:function(a){return 3*a*a*(1-a)},B3:function(a){return 3*a*(1-a)*(1-a)},B4:function(a){return(1-a)*(1-a)*(1-a)},getNow:function(){var a=1-((new Date).getTime()-this.ts)/this.spd,g=this.B2(a)+this.B3(a)+this.B4(a);return 0>a?this.ed:this.st+Math.round(this.df*g)},update:function(a,g){this.st=this.getNow();this.ed=a;this.spd=g;this.ts=(new Date).getTime();this.df=this.ed-this.st;return this}}; if(this.ishwscroll){this.doc.translate={x:0,y:0,tx:"0px",ty:"0px"};e.hastranslate3d&&e.isios&&this.doc.css("-webkit-backface-visibility","hidden");this.getScrollTop=function(b){if(!b){if(b=h())return 16==b.length?-b[13]:-b[5];if(a.timerscroll&&a.timerscroll.bz)return a.timerscroll.bz.getNow()}return a.doc.translate.y};this.getScrollLeft=function(b){if(!b){if(b=h())return 16==b.length?-b[12]:-b[4];if(a.timerscroll&&a.timerscroll.bh)return a.timerscroll.bh.getNow()}return a.doc.translate.x};this.notifyScrollEvent= function(a){var g=document.createEvent("UIEvents");g.initUIEvent("scroll",!1,!0,window,1);g.niceevent=!0;a.dispatchEvent(g)};var K=this.isrtlmode?1:-1;e.hastranslate3d&&a.opt.enabletranslate3d?(this.setScrollTop=function(b,g){a.doc.translate.y=b;a.doc.translate.ty=-1*b+"px";a.doc.css(e.trstyle,"translate3d("+a.doc.translate.tx+","+a.doc.translate.ty+",0px)");g||a.notifyScrollEvent(a.win[0])},this.setScrollLeft=function(b,g){a.doc.translate.x=b;a.doc.translate.tx=b*K+"px";a.doc.css(e.trstyle,"translate3d("+ a.doc.translate.tx+","+a.doc.translate.ty+",0px)");g||a.notifyScrollEvent(a.win[0])}):(this.setScrollTop=function(b,g){a.doc.translate.y=b;a.doc.translate.ty=-1*b+"px";a.doc.css(e.trstyle,"translate("+a.doc.translate.tx+","+a.doc.translate.ty+")");g||a.notifyScrollEvent(a.win[0])},this.setScrollLeft=function(b,g){a.doc.translate.x=b;a.doc.translate.tx=b*K+"px";a.doc.css(e.trstyle,"translate("+a.doc.translate.tx+","+a.doc.translate.ty+")");g||a.notifyScrollEvent(a.win[0])})}else this.getScrollTop= function(){return a.docscroll.scrollTop()},this.setScrollTop=function(b){return a.docscroll.scrollTop(b)},this.getScrollLeft=function(){return a.detected.ismozilla&&a.isrtlmode?Math.abs(a.docscroll.scrollLeft()):a.docscroll.scrollLeft()},this.setScrollLeft=function(b){return a.docscroll.scrollLeft(a.detected.ismozilla&&a.isrtlmode?-b:b)};this.getTarget=function(a){return a?a.target?a.target:a.srcElement?a.srcElement:!1:!1};this.hasParent=function(a,g){if(!a)return!1;for(var c=a.target||a.srcElement|| a||!1;c&&c.id!=g;)c=c.parentNode||!1;return!1!==c};var w={thin:1,medium:3,thick:5};this.getDocumentScrollOffset=function(){return{top:window.pageYOffset||document.documentElement.scrollTop,left:window.pageXOffset||document.documentElement.scrollLeft}};this.getOffset=function(){if(a.isfixed){var b=a.win.offset(),g=a.getDocumentScrollOffset();b.top-=g.top;b.left-=g.left;return b}b=a.win.offset();if(!a.viewport)return b;g=a.viewport.offset();return{top:b.top-g.top,left:b.left-g.left}};this.updateScrollBar= function(b){if(a.ishwscroll)a.rail.css({height:a.win.innerHeight()-(a.opt.railpadding.top+a.opt.railpadding.bottom)}),a.railh&&a.railh.css({width:a.win.innerWidth()-(a.opt.railpadding.left+a.opt.railpadding.right)});else{var g=a.getOffset(),c=g.top,e=g.left-(a.opt.railpadding.left+a.opt.railpadding.right),c=c+d(a.win,"border-top-width",!0),e=e+(a.rail.align?a.win.outerWidth()-d(a.win,"border-right-width")-a.rail.width:d(a.win,"border-left-width")),f=a.opt.railoffset;f&&(f.top&&(c+=f.top),a.rail.align&& f.left&&(e+=f.left));a.railslocked||a.rail.css({top:c,left:e,height:(b?b.h:a.win.innerHeight())-(a.opt.railpadding.top+a.opt.railpadding.bottom)});a.zoom&&a.zoom.css({top:c+1,left:1==a.rail.align?e-20:e+a.rail.width+4});if(a.railh&&!a.railslocked){c=g.top;e=g.left;if(f=a.opt.railhoffset)f.top&&(c+=f.top),f.left&&(e+=f.left);b=a.railh.align?c+d(a.win,"border-top-width",!0)+a.win.innerHeight()-a.railh.height:c+d(a.win,"border-top-width",!0);e+=d(a.win,"border-left-width");a.railh.css({top:b-(a.opt.railpadding.top+ a.opt.railpadding.bottom),left:e,width:a.railh.width})}}};this.doRailClick=function(b,g,c){var e;a.railslocked||(a.cancelEvent(b),g?(g=c?a.doScrollLeft:a.doScrollTop,e=c?(b.pageX-a.railh.offset().left-a.cursorwidth/2)*a.scrollratio.x:(b.pageY-a.rail.offset().top-a.cursorheight/2)*a.scrollratio.y,g(e)):(g=c?a.doScrollLeftBy:a.doScrollBy,e=c?a.scroll.x:a.scroll.y,b=c?b.pageX-a.railh.offset().left:b.pageY-a.rail.offset().top,c=c?a.view.w:a.view.h,g(e>=b?c:-c)))};a.hasanimationframe=s;a.hascancelanimationframe= t;a.hasanimationframe?a.hascancelanimationframe||(t=function(){a.cancelAnimationFrame=!0}):(s=function(a){return setTimeout(a,15-Math.floor(+new Date/1E3)%16)},t=clearInterval);this.init=function(){a.saved.css=[];if(e.isie7mobile||e.isoperamini)return!0;e.hasmstouch&&a.css(a.ispage?f("html"):a.win,{"-ms-touch-action":"none"});a.zindex="auto";a.zindex=a.ispage||"auto"!=a.opt.zindex?a.opt.zindex:m()||"auto";!a.ispage&&"auto"!=a.zindex&&a.zindex>x&&(x=a.zindex);a.isie&&0==a.zindex&&"auto"==a.opt.zindex&& (a.zindex="auto");if(!a.ispage||!e.cantouch&&!e.isieold&&!e.isie9mobile){var b=a.docscroll;a.ispage&&(b=a.haswrapper?a.win:a.doc);e.isie9mobile||a.css(b,{"overflow-y":"hidden"});a.ispage&&e.isie7&&("BODY"==a.doc[0].nodeName?a.css(f("html"),{"overflow-y":"hidden"}):"HTML"==a.doc[0].nodeName&&a.css(f("body"),{"overflow-y":"hidden"}));!e.isios||a.ispage||a.haswrapper||a.css(f("body"),{"-webkit-overflow-scrolling":"touch"});var g=f(document.createElement("div"));g.css({position:"relative",top:0,"float":"right", width:a.opt.cursorwidth,height:"0px","background-color":a.opt.cursorcolor,border:a.opt.cursorborder,"background-clip":"padding-box","-webkit-border-radius":a.opt.cursorborderradius,"-moz-border-radius":a.opt.cursorborderradius,"border-radius":a.opt.cursorborderradius});g.hborder=parseFloat(g.outerHeight()-g.innerHeight());g.addClass("nicescroll-cursors");a.cursor=g;var c=f(document.createElement("div"));c.attr("id",a.id);c.addClass("nicescroll-rails nicescroll-rails-vr");var d,h,k=["left","right", "top","bottom"],J;for(J in k)h=k[J],(d=a.opt.railpadding[h])?c.css("padding-"+h,d+"px"):a.opt.railpadding[h]=0;c.append(g);c.width=Math.max(parseFloat(a.opt.cursorwidth),g.outerWidth());c.css({width:c.width+"px",zIndex:a.zindex,background:a.opt.background,cursor:"default"});c.visibility=!0;c.scrollable=!0;c.align="left"==a.opt.railalign?0:1;a.rail=c;g=a.rail.drag=!1;!a.opt.boxzoom||a.ispage||e.isieold||(g=document.createElement("div"),a.bind(g,"click",a.doZoom),a.bind(g,"mouseenter",function(){a.zoom.css("opacity", a.opt.cursoropacitymax)}),a.bind(g,"mouseleave",function(){a.zoom.css("opacity",a.opt.cursoropacitymin)}),a.zoom=f(g),a.zoom.css({cursor:"pointer","z-index":a.zindex,backgroundImage:"url("+a.opt.scriptpath+"zoomico.png)",height:18,width:18,backgroundPosition:"0px 0px"}),a.opt.dblclickzoom&&a.bind(a.win,"dblclick",a.doZoom),e.cantouch&&a.opt.gesturezoom&&(a.ongesturezoom=function(b){1.5b.scale&&a.doZoomOut(b);return a.cancelEvent(b)},a.bind(a.win,"gestureend",a.ongesturezoom))); a.railh=!1;var l;a.opt.horizrailenabled&&(a.css(b,{"overflow-x":"hidden"}),g=f(document.createElement("div")),g.css({position:"absolute",top:0,height:a.opt.cursorwidth,width:"0px","background-color":a.opt.cursorcolor,border:a.opt.cursorborder,"background-clip":"padding-box","-webkit-border-radius":a.opt.cursorborderradius,"-moz-border-radius":a.opt.cursorborderradius,"border-radius":a.opt.cursorborderradius}),e.isieold&&g.css({overflow:"hidden"}),g.wborder=parseFloat(g.outerWidth()-g.innerWidth()), g.addClass("nicescroll-cursors"),a.cursorh=g,l=f(document.createElement("div")),l.attr("id",a.id+"-hr"),l.addClass("nicescroll-rails nicescroll-rails-hr"),l.height=Math.max(parseFloat(a.opt.cursorwidth),g.outerHeight()),l.css({height:l.height+"px",zIndex:a.zindex,background:a.opt.background}),l.append(g),l.visibility=!0,l.scrollable=!0,l.align="top"==a.opt.railvalign?0:1,a.railh=l,a.railh.drag=!1);a.ispage?(c.css({position:"fixed",top:"0px",height:"100%"}),c.align?c.css({right:"0px"}):c.css({left:"0px"}), a.body.append(c),a.railh&&(l.css({position:"fixed",left:"0px",width:"100%"}),l.align?l.css({bottom:"0px"}):l.css({top:"0px"}),a.body.append(l))):(a.ishwscroll?("static"==a.win.css("position")&&a.css(a.win,{position:"relative"}),b="HTML"==a.win[0].nodeName?a.body:a.win,f(b).scrollTop(0).scrollLeft(0),a.zoom&&(a.zoom.css({position:"absolute",top:1,right:0,"margin-right":c.width+4}),b.append(a.zoom)),c.css({position:"absolute",top:0}),c.align?c.css({right:0}):c.css({left:0}),b.append(c),l&&(l.css({position:"absolute", left:0,bottom:0}),l.align?l.css({bottom:0}):l.css({top:0}),b.append(l))):(a.isfixed="fixed"==a.win.css("position"),b=a.isfixed?"fixed":"absolute",a.isfixed||(a.viewport=a.getViewport(a.win[0])),a.viewport&&(a.body=a.viewport,0==/fixed|absolute/.test(a.viewport.css("position"))&&a.css(a.viewport,{position:"relative"})),c.css({position:b}),a.zoom&&a.zoom.css({position:b}),a.updateScrollBar(),a.body.append(c),a.zoom&&a.body.append(a.zoom),a.railh&&(l.css({position:b}),a.body.append(l))),e.isios&&a.css(a.win, {"-webkit-tap-highlight-color":"rgba(0,0,0,0)","-webkit-touch-callout":"none"}),e.isie&&a.opt.disableoutline&&a.win.attr("hideFocus","true"),e.iswebkit&&a.opt.disableoutline&&a.win.css({outline:"none"}));!1===a.opt.autohidemode?(a.autohidedom=!1,a.rail.css({opacity:a.opt.cursoropacitymax}),a.railh&&a.railh.css({opacity:a.opt.cursoropacitymax})):!0===a.opt.autohidemode||"leave"===a.opt.autohidemode?(a.autohidedom=f().add(a.rail),e.isie8&&(a.autohidedom=a.autohidedom.add(a.cursor)),a.railh&&(a.autohidedom= a.autohidedom.add(a.railh)),a.railh&&e.isie8&&(a.autohidedom=a.autohidedom.add(a.cursorh))):"scroll"==a.opt.autohidemode?(a.autohidedom=f().add(a.rail),a.railh&&(a.autohidedom=a.autohidedom.add(a.railh))):"cursor"==a.opt.autohidemode?(a.autohidedom=f().add(a.cursor),a.railh&&(a.autohidedom=a.autohidedom.add(a.cursorh))):"hidden"==a.opt.autohidemode&&(a.autohidedom=!1,a.hide(),a.railslocked=!1);if(e.isie9mobile)a.scrollmom=new L(a),a.onmangotouch=function(){var b=a.getScrollTop(),c=a.getScrollLeft(); if(b==a.scrollmom.lastscrolly&&c==a.scrollmom.lastscrollx)return!0;var g=b-a.mangotouch.sy,e=c-a.mangotouch.sx;if(0!=Math.round(Math.sqrt(Math.pow(e,2)+Math.pow(g,2)))){var d=0>g?-1:1,f=0>e?-1:1,q=+new Date;a.mangotouch.lazy&&clearTimeout(a.mangotouch.lazy);80k?k=Math.round(k/2):k>a.page.maxh&&(k=a.page.maxh+Math.round((k-a.page.maxh)/2)):(0>k&&(q=k=0),k>a.page.maxh&&(k=a.page.maxh,q=0));var l;a.railh&&a.railh.scrollable&&(l=a.isrtlmode?u-a.rail.drag.sl:a.rail.drag.sl-u,a.ishwscroll&&a.opt.bouncescroll?0>l?l=Math.round(l/2):l>a.page.maxw&&(l=a.page.maxw+Math.round((l-a.page.maxw)/2)):(0>l&&(h=l=0),l>a.page.maxw&&(l=a.page.maxw,h=0)));g=!1;if(a.rail.drag.dl)g= !0,"v"==a.rail.drag.dl?l=a.rail.drag.sl:"h"==a.rail.drag.dl&&(k=a.rail.drag.st);else{d=Math.abs(d);var u=Math.abs(u),z=a.opt.directionlockdeadzone;if("v"==a.rail.drag.ck){if(d>z&&u<=.3*d)return a.rail.drag=!1,!0;u>z&&(a.rail.drag.dl="f",f("body").scrollTop(f("body").scrollTop()))}else if("h"==a.rail.drag.ck){if(u>z&&d<=.3*u)return a.rail.drag=!1,!0;d>z&&(a.rail.drag.dl="f",f("body").scrollLeft(f("body").scrollLeft()))}}a.synched("touchmove",function(){a.rail.drag&&2==a.rail.drag.pt&&(a.prepareTransition&& a.prepareTransition(0),a.rail.scrollable&&a.setScrollTop(k),a.scrollmom.update(h,q),a.railh&&a.railh.scrollable?(a.setScrollLeft(l),a.showCursor(k,l)):a.showCursor(k),e.isie10&&document.selection.clear())});e.ischrome&&a.istouchcapable&&(g=!1);if(g)return a.cancelEvent(b)}else if(1==a.rail.drag.pt)return a.onmousemove(b)}}a.onmousedown=function(b,c){if(!a.rail.drag||1==a.rail.drag.pt){if(a.railslocked)return a.cancelEvent(b);a.cancelScroll();a.rail.drag={x:b.clientX,y:b.clientY,sx:a.scroll.x,sy:a.scroll.y, pt:1,hr:!!c};var g=a.getTarget(b);!a.ispage&&e.hasmousecapture&&g.setCapture();a.isiframe&&!e.hasmousecapture&&(a.saved.csspointerevents=a.doc.css("pointer-events"),a.css(a.doc,{"pointer-events":"none"}));a.hasmoving=!1;return a.cancelEvent(b)}};a.onmouseup=function(b){if(a.rail.drag){if(1!=a.rail.drag.pt)return!0;e.hasmousecapture&&document.releaseCapture();a.isiframe&&!e.hasmousecapture&&a.doc.css("pointer-events",a.saved.csspointerevents);a.rail.drag=!1;a.hasmoving&&a.triggerScrollEnd();return a.cancelEvent(b)}}; a.onmousemove=function(b){if(a.rail.drag&&1==a.rail.drag.pt){if(e.ischrome&&0==b.which)return a.onmouseup(b);a.cursorfreezed=!0;a.hasmoving=!0;if(a.rail.drag.hr){a.scroll.x=a.rail.drag.sx+(b.clientX-a.rail.drag.x);0>a.scroll.x&&(a.scroll.x=0);var c=a.scrollvaluemaxw;a.scroll.x>c&&(a.scroll.x=c)}else a.scroll.y=a.rail.drag.sy+(b.clientY-a.rail.drag.y),0>a.scroll.y&&(a.scroll.y=0),c=a.scrollvaluemax,a.scroll.y>c&&(a.scroll.y=c);a.synched("mousemove",function(){a.rail.drag&&1==a.rail.drag.pt&&(a.showCursor(), a.rail.drag.hr?a.hasreversehr?a.doScrollLeft(a.scrollvaluemaxw-Math.round(a.scroll.x*a.scrollratio.x),a.opt.cursordragspeed):a.doScrollLeft(Math.round(a.scroll.x*a.scrollratio.x),a.opt.cursordragspeed):a.doScrollTop(Math.round(a.scroll.y*a.scrollratio.y),a.opt.cursordragspeed))});return a.cancelEvent(b)}};if(e.cantouch||a.opt.touchbehavior)a.onpreventclick=function(b){if(a.preventclick)return a.preventclick.tg.onclick=a.preventclick.click,a.preventclick=!1,a.cancelEvent(b)},a.bind(a.win,"mousedown", a.ontouchstart),a.onclick=e.isios?!1:function(b){return a.lastmouseup?(a.lastmouseup=!1,a.cancelEvent(b)):!0},a.opt.grabcursorenabled&&e.cursorgrabvalue&&(a.css(a.ispage?a.doc:a.win,{cursor:e.cursorgrabvalue}),a.css(a.rail,{cursor:e.cursorgrabvalue}));else{var p=function(b){if(a.selectiondrag){if(b){var c=a.win.outerHeight();b=b.pageY-a.selectiondrag.top;0=c&&(b-=c);a.selectiondrag.df=b}0!=a.selectiondrag.df&&(a.doScrollBy(2*-Math.floor(a.selectiondrag.df/6)),a.debounced("doselectionscroll", function(){p()},50))}};a.hasTextSelected="getSelection"in document?function(){return 0a.page.maxh?a.doScrollTop(a.page.maxh):(a.scroll.y=Math.round(a.getScrollTop()*(1/a.scrollratio.y)),a.scroll.x=Math.round(a.getScrollLeft()*(1/a.scrollratio.x)),a.cursoractive&&a.noticeCursor());a.scroll.y&&0==a.getScrollTop()&&a.doScrollTo(Math.floor(a.scroll.y*a.scrollratio.y));return a};this.resize=a.onResize;this.lazyResize=function(b){b=isNaN(b)?30:b;a.debounced("resize",a.resize,b);return a};this.jqbind=function(b, c,d){a.events.push({e:b,n:c,f:d,q:!0});f(b).bind(c,d)};this.bind=function(b,c,d,f){var h="jquery"in b?b[0]:b;"mousewheel"==c?window.addEventListener||"onwheel"in document?a._bind(h,"wheel",d,f||!1):(b="undefined"!=typeof document.onmousewheel?"mousewheel":"DOMMouseScroll",n(h,b,d,f||!1),"DOMMouseScroll"==b&&n(h,"MozMousePixelScroll",d,f||!1)):h.addEventListener?(e.cantouch&&/mouseup|mousedown|mousemove/.test(c)&&a._bind(h,"mousedown"==c?"touchstart":"mouseup"==c?"touchend":"touchmove",function(a){if(a.touches){if(2> a.touches.length){var b=a.touches.length?a.touches[0]:a;b.original=a;d.call(this,b)}}else a.changedTouches&&(b=a.changedTouches[0],b.original=a,d.call(this,b))},f||!1),a._bind(h,c,d,f||!1),e.cantouch&&"mouseup"==c&&a._bind(h,"touchcancel",d,f||!1)):a._bind(h,c,function(b){(b=b||window.event||!1)&&b.srcElement&&(b.target=b.srcElement);"pageY"in b||(b.pageX=b.clientX+document.documentElement.scrollLeft,b.pageY=b.clientY+document.documentElement.scrollTop);return!1===d.call(h,b)||!1===f?a.cancelEvent(b): !0})};e.haseventlistener?(this._bind=function(b,c,d,e){a.events.push({e:b,n:c,f:d,b:e,q:!1});b.addEventListener(c,d,e||!1)},this.cancelEvent=function(a){if(!a)return!1;a=a.original?a.original:a;a.preventDefault();a.stopPropagation();a.preventManipulation&&a.preventManipulation();return!1},this.stopPropagation=function(a){if(!a)return!1;a=a.original?a.original:a;a.stopPropagation();return!1},this._unbind=function(a,c,d,e){a.removeEventListener(c,d,e)}):(this._bind=function(b,c,d,e){a.events.push({e:b, n:c,f:d,b:e,q:!1});b.attachEvent?b.attachEvent("on"+c,d):b["on"+c]=d},this.cancelEvent=function(a){a=window.event||!1;if(!a)return!1;a.cancelBubble=!0;a.cancel=!0;return a.returnValue=!1},this.stopPropagation=function(a){a=window.event||!1;if(!a)return!1;a.cancelBubble=!0;return!1},this._unbind=function(a,c,d,e){a.detachEvent?a.detachEvent("on"+c,d):a["on"+c]=!1});this.unbindAll=function(){for(var b=0;b(a.newscrolly- f)*(c-f)||0>(a.newscrollx-h)*(b-h))&&a.cancelScroll();0==a.opt.bouncescroll&&(0>c?c=0:c>a.page.maxh&&(c=a.page.maxh),0>b?b=0:b>a.page.maxw&&(b=a.page.maxw));if(a.scrollrunning&&b==a.newscrollx&&c==a.newscrolly)return!1;a.newscrolly=c;a.newscrollx=b;a.newscrollspeed=d||!1;if(a.timer)return!1;a.timer=setTimeout(function(){var d=a.getScrollTop(),f=a.getScrollLeft(),h,k;h=b-f;k=c-d;h=Math.round(Math.sqrt(Math.pow(h,2)+Math.pow(k,2)));h=a.newscrollspeed&&1=a.newscrollspeed&&(h*=a.newscrollspeed);a.prepareTransition(h,!0);a.timerscroll&&a.timerscroll.tm&&clearInterval(a.timerscroll.tm);0b?b=0:b>a.page.maxh&&(b=a.page.maxh);0>c?c=0:c>a.page.maxw&&(c=a.page.maxw);if(b!=a.newscrolly||c!=a.newscrollx)return a.doScrollPos(c,b,a.opt.snapbackspeed);a.onscrollend&&a.scrollrunning&&a.triggerScrollEnd();a.scrollrunning=!1}):(this.doScrollLeft= function(b,c){var d=a.scrollrunning?a.newscrolly:a.getScrollTop();a.doScrollPos(b,d,c)},this.doScrollTop=function(b,c){var d=a.scrollrunning?a.newscrollx:a.getScrollLeft();a.doScrollPos(d,b,c)},this.doScrollPos=function(b,c,d){function e(){if(a.cancelAnimationFrame)return!0;a.scrollrunning=!0;if(n=1-n)return a.timer=s(e)||1;var b=0,c,d,g=d=a.getScrollTop();if(a.dst.ay){g=a.bzscroll?a.dst.py+a.bzscroll.getNow()*a.dst.ay:a.newscrolly;c=g-d;if(0>c&&ga.newscrolly)g=a.newscrolly; a.setScrollTop(g);g==a.newscrolly&&(b=1)}else b=1;d=c=a.getScrollLeft();if(a.dst.ax){d=a.bzscroll?a.dst.px+a.bzscroll.getNow()*a.dst.ax:a.newscrollx;c=d-c;if(0>c&&da.newscrollx)d=a.newscrollx;a.setScrollLeft(d);d==a.newscrollx&&(b+=1)}else b+=1;2==b?(a.timer=0,a.cursorfreezed=!1,a.bzscroll=!1,a.scrollrunning=!1,0>g?g=0:g>a.page.maxh&&(g=a.page.maxh),0>d?d=0:d>a.page.maxw&&(d=a.page.maxw),d!=a.newscrollx||g!=a.newscrolly?a.doScrollPos(d,g):a.onscrollend&&a.triggerScrollEnd()): a.timer=s(e)||1}c="undefined"==typeof c||!1===c?a.getScrollTop(!0):c;if(a.timer&&a.newscrolly==c&&a.newscrollx==b)return!0;a.timer&&t(a.timer);a.timer=0;var f=a.getScrollTop(),h=a.getScrollLeft();(0>(a.newscrolly-f)*(c-f)||0>(a.newscrollx-h)*(b-h))&&a.cancelScroll();a.newscrolly=c;a.newscrollx=b;a.bouncescroll&&a.rail.visibility||(0>a.newscrolly?a.newscrolly=0:a.newscrolly>a.page.maxh&&(a.newscrolly=a.page.maxh));a.bouncescroll&&a.railh.visibility||(0>a.newscrollx?a.newscrollx=0:a.newscrollx>a.page.maxw&& (a.newscrollx=a.page.maxw));a.dst={};a.dst.x=b-h;a.dst.y=c-f;a.dst.px=h;a.dst.py=f;var k=Math.round(Math.sqrt(Math.pow(a.dst.x,2)+Math.pow(a.dst.y,2)));a.dst.ax=a.dst.x/k;a.dst.ay=a.dst.y/k;var l=0,m=k;0==a.dst.x?(l=f,m=c,a.dst.ay=1,a.dst.py=0):0==a.dst.y&&(l=h,m=b,a.dst.ax=1,a.dst.px=0);k=a.getTransitionSpeed(k);d&&1>=d&&(k*=d);a.bzscroll=0=a.page.maxh||h==a.page.maxw&&b>=a.page.maxw)&&a.checkContentSize(); var n=1;a.cancelAnimationFrame=!1;a.timer=1;a.onscrollstart&&!a.scrollrunning&&a.onscrollstart.call(a,{type:"scrollstart",current:{x:h,y:f},request:{x:b,y:c},end:{x:a.newscrollx,y:a.newscrolly},speed:k});e();(f==a.page.maxh&&c>=f||h==a.page.maxw&&b>=h)&&a.checkContentSize();a.noticeCursor()}},this.cancelScroll=function(){a.timer&&t(a.timer);a.timer=0;a.bzscroll=!1;a.scrollrunning=!1;return a}):(this.doScrollLeft=function(b,c){var d=a.getScrollTop();a.doScrollPos(b,d,c)},this.doScrollTop=function(b, c){var d=a.getScrollLeft();a.doScrollPos(d,b,c)},this.doScrollPos=function(b,c,d){var e=b>a.page.maxw?a.page.maxw:b;0>e&&(e=0);var f=c>a.page.maxh?a.page.maxh:c;0>f&&(f=0);a.synched("scroll",function(){a.setScrollTop(f);a.setScrollLeft(e)})},this.cancelScroll=function(){});this.doScrollBy=function(b,c){var d=0,d=c?Math.floor((a.scroll.y-b)*a.scrollratio.y):(a.timer?a.newscrolly:a.getScrollTop(!0))-b;if(a.bouncescroll){var e=Math.round(a.view.h/2);d<-e?d=-e:d>a.page.maxh+e&&(d=a.page.maxh+e)}a.cursorfreezed= !1;e=a.getScrollTop(!0);if(0>d&&0>=e)return a.noticeCursor();if(d>a.page.maxh&&e>=a.page.maxh)return a.checkContentSize(),a.noticeCursor();a.doScrollTop(d)};this.doScrollLeftBy=function(b,c){var d=0,d=c?Math.floor((a.scroll.x-b)*a.scrollratio.x):(a.timer?a.newscrollx:a.getScrollLeft(!0))-b;if(a.bouncescroll){var e=Math.round(a.view.w/2);d<-e?d=-e:d>a.page.maxw+e&&(d=a.page.maxw+e)}a.cursorfreezed=!1;e=a.getScrollLeft(!0);if(0>d&&0>=e||d>a.page.maxw&&e>=a.page.maxw)return a.noticeCursor();a.doScrollLeft(d)}; this.doScrollTo=function(b,c){c&&Math.round(b*a.scrollratio.y);a.cursorfreezed=!1;a.doScrollTop(b)};this.checkContentSize=function(){var b=a.getContentSize();b.h==a.page.h&&b.w==a.page.w||a.resize(!1,b)};a.onscroll=function(b){a.rail.drag||a.cursorfreezed||a.synched("scroll",function(){a.scroll.y=Math.round(a.getScrollTop()*(1/a.scrollratio.y));a.railh&&(a.scroll.x=Math.round(a.getScrollLeft()*(1/a.scrollratio.x)));a.noticeCursor()})};a.bind(a.docscroll,"scroll",a.onscroll);this.doZoomIn=function(b){if(!a.zoomactive){a.zoomactive= !0;a.zoomrestore={style:{}};var c="position top left zIndex backgroundColor marginTop marginBottom marginLeft marginRight".split(" "),d=a.win[0].style,h;for(h in c){var k=c[h];a.zoomrestore.style[k]="undefined"!=typeof d[k]?d[k]:""}a.zoomrestore.style.width=a.win.css("width");a.zoomrestore.style.height=a.win.css("height");a.zoomrestore.padding={w:a.win.outerWidth()-a.win.width(),h:a.win.outerHeight()-a.win.height()};e.isios4&&(a.zoomrestore.scrollTop=f(window).scrollTop(),f(window).scrollTop(0)); a.win.css({position:e.isios4?"absolute":"fixed",top:0,left:0,"z-index":x+100,margin:"0px"});c=a.win.css("backgroundColor");(""==c||/transparent|rgba\(0, 0, 0, 0\)|rgba\(0,0,0,0\)/.test(c))&&a.win.css("backgroundColor","#fff");a.rail.css({"z-index":x+101});a.zoom.css({"z-index":x+102});a.zoom.css("backgroundPosition","0px -18px");a.resizeZoom();a.onzoomin&&a.onzoomin.call(a);return a.cancelEvent(b)}};this.doZoomOut=function(b){if(a.zoomactive)return a.zoomactive=!1,a.win.css("margin",""),a.win.css(a.zoomrestore.style), e.isios4&&f(window).scrollTop(a.zoomrestore.scrollTop),a.rail.css({"z-index":a.zindex}),a.zoom.css({"z-index":a.zindex}),a.zoomrestore=!1,a.zoom.css("backgroundPosition","0px 0px"),a.onResize(),a.onzoomout&&a.onzoomout.call(a),a.cancelEvent(b)};this.doZoom=function(b){return a.zoomactive?a.doZoomOut(b):a.doZoomIn(b)};this.resizeZoom=function(){if(a.zoomactive){var b=a.getScrollTop();a.win.css({width:f(window).width()-a.zoomrestore.padding.w+"px",height:f(window).height()-a.zoomrestore.padding.h+"px"}); a.onResize();a.setScrollTop(Math.min(a.page.maxh,b))}};this.init();f.nicescroll.push(this)},L=function(f){var c=this;this.nc=f;this.steptime=this.lasttime=this.speedy=this.speedx=this.lasty=this.lastx=0;this.snapy=this.snapx=!1;this.demuly=this.demulx=0;this.lastscrolly=this.lastscrollx=-1;this.timer=this.chky=this.chkx=0;this.time=function(){return+new Date};this.reset=function(f,k){c.stop();var d=c.time();c.steptime=0;c.lasttime=d;c.speedx=0;c.speedy=0;c.lastx=f;c.lasty=k;c.lastscrollx=-1;c.lastscrolly= -1};this.update=function(f,k){var d=c.time();c.steptime=d-c.lasttime;c.lasttime=d;var d=k-c.lasty,n=f-c.lastx,p=c.nc.getScrollTop(),a=c.nc.getScrollLeft(),p=p+d,a=a+n;c.snapx=0>a||a>c.nc.page.maxw;c.snapy=0>p||p>c.nc.page.maxh;c.speedx=n;c.speedy=d;c.lastx=f;c.lasty=k};this.stop=function(){c.nc.unsynched("domomentum2d");c.timer&&clearTimeout(c.timer);c.timer=0;c.lastscrollx=-1;c.lastscrolly=-1};this.doSnapy=function(f,k){var d=!1;0>k?(k=0,d=!0):k>c.nc.page.maxh&&(k=c.nc.page.maxh,d=!0);0>f?(f=0,d= !0):f>c.nc.page.maxw&&(f=c.nc.page.maxw,d=!0);d?c.nc.doScrollPos(f,k,c.nc.opt.snapbackspeed):c.nc.triggerScrollEnd()};this.doMomentum=function(f){var k=c.time(),d=f?k+f:c.lasttime;f=c.nc.getScrollLeft();var n=c.nc.getScrollTop(),p=c.nc.page.maxh,a=c.nc.page.maxw;c.speedx=0=k-d;if(0>n||n>p||0>f||f>a)d=!1;f=c.speedx&&d?c.speedx:!1;if(c.speedy&&d&&c.speedy||f){var s=Math.max(16,c.steptime);50e||e>a)&&(d=.1);c.speedy&&(r=Math.floor(c.lastscrolly-c.speedy*(1-c.demulxy)),c.lastscrolly=r,0>r||r>p)&&(d=.1);c.demulxy=Math.min(1,c.demulxy+d);c.nc.synched("domomentum2d",function(){c.speedx&&(c.nc.getScrollLeft()!=c.chkx&&c.stop(),c.chkx=e,c.nc.setScrollLeft(e));c.speedy&&(c.nc.getScrollTop()!=c.chky&&c.stop(),c.chky=r,c.nc.setScrollTop(r));c.timer||(c.nc.hideCursor(),c.doSnapy(e,r))});1>c.demulxy?c.timer=setTimeout(t,s):(c.stop(),c.nc.hideCursor(),c.doSnapy(e,r))};t()}else c.doSnapy(c.nc.getScrollLeft(),c.nc.getScrollTop())}},w=f.fn.scrollTop;f.cssHooks.pageYOffset={get:function(k,c,h){return(c=f.data(k,"__nicescroll")||!1)&&c.ishwscroll?c.getScrollTop():w.call(k)},set:function(k,c){var h=f.data(k,"__nicescroll")|| !1;h&&h.ishwscroll?h.setScrollTop(parseInt(c)):w.call(k,c);return this}};f.fn.scrollTop=function(k){if("undefined"==typeof k){var c=this[0]?f.data(this[0],"__nicescroll")||!1:!1;return c&&c.ishwscroll?c.getScrollTop():w.call(this)}return this.each(function(){var c=f.data(this,"__nicescroll")||!1;c&&c.ishwscroll?c.setScrollTop(parseInt(k)):w.call(f(this),k)})};var B=f.fn.scrollLeft;f.cssHooks.pageXOffset={get:function(k,c,h){return(c=f.data(k,"__nicescroll")||!1)&&c.ishwscroll?c.getScrollLeft():B.call(k)}, set:function(k,c){var h=f.data(k,"__nicescroll")||!1;h&&h.ishwscroll?h.setScrollLeft(parseInt(c)):B.call(k,c);return this}};f.fn.scrollLeft=function(k){if("undefined"==typeof k){var c=this[0]?f.data(this[0],"__nicescroll")||!1:!1;return c&&c.ishwscroll?c.getScrollLeft():B.call(this)}return this.each(function(){var c=f.data(this,"__nicescroll")||!1;c&&c.ishwscroll?c.setScrollLeft(parseInt(k)):B.call(f(this),k)})};var C=function(k){var c=this;this.length=0;this.name="nicescrollarray";this.each=function(d){for(var f= 0,h=0;fd;d++)c=f[d],g.push(this.add_option(c,b,a.disabled));return g},SelectParser.prototype.add_option=function(a,b,c){return"OPTION"===a.nodeName.toUpperCase()?(""!==a.text?(null!=b&&(this.parsed[b].children+=1),this.parsed.push({array_index:this.parsed.length,options_index:this.options_index,value:a.value,text:a.text,html:a.innerHTML,selected:a.selected,disabled:c===!0?c:a.disabled,group_array_index:b,classes:a.className,style:a.style.cssText})):this.parsed.push({array_index:this.parsed.length,options_index:this.options_index,empty:!0}),this.options_index+=1):void 0},SelectParser.prototype.escapeExpression=function(a){var b,c;return null==a||a===!1?"":/[\&\<\>\"\'\`]/.test(a)?(b={"<":"<",">":">",'"':""","'":"'","`":"`"},c=/&(?!\w+;)|[\<\>\"\'\`]/g,a.replace(c,function(a){return b[a]||"&"})):a},SelectParser}(),SelectParser.select_to_array=function(a){var b,c,d,e,f;for(c=new SelectParser,f=a.childNodes,d=0,e=f.length;e>d;d++)b=f[d],c.add_node(b);return c.parsed},AbstractChosen=function(){function AbstractChosen(a,b){this.form_field=a,this.options=null!=b?b:{},AbstractChosen.browser_is_supported()&&(this.is_multiple=this.form_field.multiple,this.set_default_text(),this.set_default_values(),this.setup(),this.set_up_html(),this.register_observers())}return AbstractChosen.prototype.set_default_values=function(){var a=this;return this.click_test_action=function(b){return a.test_active_click(b)},this.activate_action=function(b){return a.activate_field(b)},this.active_field=!1,this.mouse_on_container=!1,this.results_showing=!1,this.result_highlighted=null,this.allow_single_deselect=null!=this.options.allow_single_deselect&&null!=this.form_field.options[0]&&""===this.form_field.options[0].text?this.options.allow_single_deselect:!1,this.disable_search_threshold=this.options.disable_search_threshold||0,this.disable_search=this.options.disable_search||!1,this.enable_split_word_search=null!=this.options.enable_split_word_search?this.options.enable_split_word_search:!0,this.group_search=null!=this.options.group_search?this.options.group_search:!0,this.search_contains=this.options.search_contains||!1,this.single_backstroke_delete=null!=this.options.single_backstroke_delete?this.options.single_backstroke_delete:!0,this.max_selected_options=this.options.max_selected_options||1/0,this.inherit_select_classes=this.options.inherit_select_classes||!1,this.display_selected_options=null!=this.options.display_selected_options?this.options.display_selected_options:!0,this.display_disabled_options=null!=this.options.display_disabled_options?this.options.display_disabled_options:!0},AbstractChosen.prototype.set_default_text=function(){return this.default_text=this.form_field.getAttribute("data-placeholder")?this.form_field.getAttribute("data-placeholder"):this.is_multiple?this.options.placeholder_text_multiple||this.options.placeholder_text||AbstractChosen.default_multiple_text:this.options.placeholder_text_single||this.options.placeholder_text||AbstractChosen.default_single_text,this.results_none_found=this.form_field.getAttribute("data-no_results_text")||this.options.no_results_text||AbstractChosen.default_no_result_text},AbstractChosen.prototype.mouse_enter=function(){return this.mouse_on_container=!0},AbstractChosen.prototype.mouse_leave=function(){return this.mouse_on_container=!1},AbstractChosen.prototype.input_focus=function(){var a=this;if(this.is_multiple){if(!this.active_field)return setTimeout(function(){return a.container_mousedown()},50)}else if(!this.active_field)return this.activate_field()},AbstractChosen.prototype.input_blur=function(){var a=this;return this.mouse_on_container?void 0:(this.active_field=!1,setTimeout(function(){return a.blur_test()},100))},AbstractChosen.prototype.results_option_build=function(a){var b,c,d,e,f;for(b="",f=this.results_data,d=0,e=f.length;e>d;d++)c=f[d],b+=c.group?this.result_add_group(c):this.result_add_option(c),(null!=a?a.first:void 0)&&(c.selected&&this.is_multiple?this.choice_build(c):c.selected&&!this.is_multiple&&this.single_set_selected_text(c.text));return b},AbstractChosen.prototype.result_add_option=function(a){var b,c;return a.search_match?this.include_option_in_results(a)?(b=[],a.disabled||a.selected&&this.is_multiple||b.push("active-result"),!a.disabled||a.selected&&this.is_multiple||b.push("disabled-result"),a.selected&&b.push("result-selected"),null!=a.group_array_index&&b.push("group-option"),""!==a.classes&&b.push(a.classes),c=document.createElement("li"),c.className=b.join(" "),c.style.cssText=a.style,c.setAttribute("data-option-array-index",a.array_index),c.innerHTML=a.search_text,this.outerHTML(c)):"":""},AbstractChosen.prototype.result_add_group=function(a){var b;return a.search_match||a.group_match?a.active_options>0?(b=document.createElement("li"),b.className="group-result",b.innerHTML=a.search_text,this.outerHTML(b)):"":""},AbstractChosen.prototype.results_update_field=function(){return this.set_default_text(),this.is_multiple||this.results_reset_cleanup(),this.result_clear_highlight(),this.results_build(),this.results_showing?this.winnow_results():void 0},AbstractChosen.prototype.reset_single_select_options=function(){var a,b,c,d,e;for(d=this.results_data,e=[],b=0,c=d.length;c>b;b++)a=d[b],a.selected?e.push(a.selected=!1):e.push(void 0);return e},AbstractChosen.prototype.results_toggle=function(){return this.results_showing?this.results_hide():this.results_show()},AbstractChosen.prototype.results_search=function(){return this.results_showing?this.winnow_results():this.results_show()},AbstractChosen.prototype.winnow_results=function(){var a,b,c,d,e,f,g,h,i,j,k,l,m;for(this.no_results_clear(),e=0,g=this.get_search_text(),a=g.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),d=this.search_contains?"":"^",c=new RegExp(d+a,"i"),j=new RegExp(a,"i"),m=this.results_data,k=0,l=m.length;l>k;k++)b=m[k],b.search_match=!1,f=null,this.include_option_in_results(b)&&(b.group&&(b.group_match=!1,b.active_options=0),null!=b.group_array_index&&this.results_data[b.group_array_index]&&(f=this.results_data[b.group_array_index],0===f.active_options&&f.search_match&&(e+=1),f.active_options+=1),(!b.group||this.group_search)&&(b.search_text=b.group?b.label:b.html,b.search_match=this.search_string_match(b.search_text,c),b.search_match&&!b.group&&(e+=1),b.search_match?(g.length&&(h=b.search_text.search(j),i=b.search_text.substr(0,h+g.length)+""+b.search_text.substr(h+g.length),b.search_text=i.substr(0,h)+""+i.substr(h)),null!=f&&(f.group_match=!0)):null!=b.group_array_index&&this.results_data[b.group_array_index].search_match&&(b.search_match=!0)));return this.result_clear_highlight(),1>e&&g.length?(this.update_results_content(""),this.no_results(g)):(this.update_results_content(this.results_option_build()),this.winnow_results_set_highlight())},AbstractChosen.prototype.search_string_match=function(a,b){var c,d,e,f;if(b.test(a))return!0;if(this.enable_split_word_search&&(a.indexOf(" ")>=0||0===a.indexOf("["))&&(d=a.replace(/\[|\]/g,"").split(" "),d.length))for(e=0,f=d.length;f>e;e++)if(c=d[e],b.test(c))return!0},AbstractChosen.prototype.choices_count=function(){var a,b,c,d;if(null!=this.selected_option_count)return this.selected_option_count;for(this.selected_option_count=0,d=this.form_field.options,b=0,c=d.length;c>b;b++)a=d[b],a.selected&&(this.selected_option_count+=1);return this.selected_option_count},AbstractChosen.prototype.choices_click=function(a){return a.preventDefault(),this.results_showing||this.is_disabled?void 0:this.results_show()},AbstractChosen.prototype.keyup_checker=function(a){var b,c;switch(b=null!=(c=a.which)?c:a.keyCode,this.search_field_scale(),b){case 8:if(this.is_multiple&&this.backstroke_length<1&&this.choices_count()>0)return this.keydown_backstroke();if(!this.pending_backstroke)return this.result_clear_highlight(),this.results_search();break;case 13:if(a.preventDefault(),this.results_showing)return this.result_select(a);break;case 27:return this.results_showing&&this.results_hide(),!0;case 9:case 38:case 40:case 16:case 91:case 17:break;default:return this.results_search()}},AbstractChosen.prototype.clipboard_event_checker=function(){var a=this;return setTimeout(function(){return a.results_search()},50)},AbstractChosen.prototype.container_width=function(){return null!=this.options.width?this.options.width:""+this.form_field.offsetWidth+"px"},AbstractChosen.prototype.include_option_in_results=function(a){return this.is_multiple&&!this.display_selected_options&&a.selected?!1:!this.display_disabled_options&&a.disabled?!1:a.empty?!1:!0},AbstractChosen.prototype.search_results_touchstart=function(a){return this.touch_started=!0,this.search_results_mouseover(a)},AbstractChosen.prototype.search_results_touchmove=function(a){return this.touch_started=!1,this.search_results_mouseout(a)},AbstractChosen.prototype.search_results_touchend=function(a){return this.touch_started?this.search_results_mouseup(a):void 0},AbstractChosen.prototype.outerHTML=function(a){var b;return a.outerHTML?a.outerHTML:(b=document.createElement("div"),b.appendChild(a),b.innerHTML)},AbstractChosen.browser_is_supported=function(){return"Microsoft Internet Explorer"===window.navigator.appName?document.documentMode>=8:/iP(od|hone)/i.test(window.navigator.userAgent)?!0:/Android/i.test(window.navigator.userAgent)&&/Mobile/i.test(window.navigator.userAgent)?!0:!0},AbstractChosen.default_multiple_text="Select Some Options",AbstractChosen.default_single_text="Select an Option",AbstractChosen.default_no_result_text="No results match",AbstractChosen}(),a=jQuery,a.fn.extend({chosen:function(b){return AbstractChosen.browser_is_supported()?this.each(function(){var c,d;c=a(this),d=c.data("chosen"),"destroy"===b&&d?d.destroy():d||c.data("chosen",new Chosen(this,b))}):this}}),Chosen=function(c){function Chosen(){return b=Chosen.__super__.constructor.apply(this,arguments)}return d(Chosen,c),Chosen.prototype.setup=function(){return this.form_field_jq=a(this.form_field),this.current_selectedIndex=this.form_field.selectedIndex,this.is_rtl=this.form_field_jq.hasClass("chosen-rtl")},Chosen.prototype.set_up_html=function(){var b,c;return b=["chosen-container"],b.push("chosen-container-"+(this.is_multiple?"multi":"single")),this.inherit_select_classes&&this.form_field.className&&b.push(this.form_field.className),this.is_rtl&&b.push("chosen-rtl"),c={"class":b.join(" "),style:"width: "+this.container_width()+";",title:this.form_field.title},this.form_field.id.length&&(c.id=this.form_field.id.replace(/[^\w]/g,"_")+"_chosen"),this.container=a("
",c),this.is_multiple?this.container.html('
    '):this.container.html(''+this.default_text+'
      '),this.form_field_jq.hide().after(this.container),this.dropdown=this.container.find("div.chosen-drop").first(),this.search_field=this.container.find("input").first(),this.search_results=this.container.find("ul.chosen-results").first(),this.search_field_scale(),this.search_no_results=this.container.find("li.no-results").first(),this.is_multiple?(this.search_choices=this.container.find("ul.chosen-choices").first(),this.search_container=this.container.find("li.search-field").first()):(this.search_container=this.container.find("div.chosen-search").first(),this.selected_item=this.container.find(".chosen-single").first()),this.results_build(),this.set_tab_index(),this.set_label_behavior(),this.form_field_jq.trigger("chosen:ready",{chosen:this})},Chosen.prototype.register_observers=function(){var a=this;return this.container.bind("mousedown.chosen",function(b){a.container_mousedown(b)}),this.container.bind("mouseup.chosen",function(b){a.container_mouseup(b)}),this.container.bind("mouseenter.chosen",function(b){a.mouse_enter(b)}),this.container.bind("mouseleave.chosen",function(b){a.mouse_leave(b)}),this.search_results.bind("mouseup.chosen",function(b){a.search_results_mouseup(b)}),this.search_results.bind("mouseover.chosen",function(b){a.search_results_mouseover(b)}),this.search_results.bind("mouseout.chosen",function(b){a.search_results_mouseout(b)}),this.search_results.bind("mousewheel.chosen DOMMouseScroll.chosen",function(b){a.search_results_mousewheel(b)}),this.search_results.bind("touchstart.chosen",function(b){a.search_results_touchstart(b)}),this.search_results.bind("touchmove.chosen",function(b){a.search_results_touchmove(b)}),this.search_results.bind("touchend.chosen",function(b){a.search_results_touchend(b)}),this.form_field_jq.bind("chosen:updated.chosen",function(b){a.results_update_field(b)}),this.form_field_jq.bind("chosen:activate.chosen",function(b){a.activate_field(b)}),this.form_field_jq.bind("chosen:open.chosen",function(b){a.container_mousedown(b)}),this.form_field_jq.bind("chosen:close.chosen",function(b){a.input_blur(b)}),this.search_field.bind("blur.chosen",function(b){a.input_blur(b)}),this.search_field.bind("keyup.chosen",function(b){a.keyup_checker(b)}),this.search_field.bind("keydown.chosen",function(b){a.keydown_checker(b)}),this.search_field.bind("focus.chosen",function(b){a.input_focus(b)}),this.search_field.bind("cut.chosen",function(b){a.clipboard_event_checker(b)}),this.search_field.bind("paste.chosen",function(b){a.clipboard_event_checker(b)}),this.is_multiple?this.search_choices.bind("click.chosen",function(b){a.choices_click(b)}):this.container.bind("click.chosen",function(a){a.preventDefault()})},Chosen.prototype.destroy=function(){return a(this.container[0].ownerDocument).unbind("click.chosen",this.click_test_action),this.search_field[0].tabIndex&&(this.form_field_jq[0].tabIndex=this.search_field[0].tabIndex),this.container.remove(),this.form_field_jq.removeData("chosen"),this.form_field_jq.show()},Chosen.prototype.search_field_disabled=function(){return this.is_disabled=this.form_field_jq[0].disabled,this.is_disabled?(this.container.addClass("chosen-disabled"),this.search_field[0].disabled=!0,this.is_multiple||this.selected_item.unbind("focus.chosen",this.activate_action),this.close_field()):(this.container.removeClass("chosen-disabled"),this.search_field[0].disabled=!1,this.is_multiple?void 0:this.selected_item.bind("focus.chosen",this.activate_action))},Chosen.prototype.container_mousedown=function(b){return this.is_disabled||(b&&"mousedown"===b.type&&!this.results_showing&&b.preventDefault(),null!=b&&a(b.target).hasClass("search-choice-close"))?void 0:(this.active_field?this.is_multiple||!b||a(b.target)[0]!==this.selected_item[0]&&!a(b.target).parents("a.chosen-single").length||(b.preventDefault(),this.results_toggle()):(this.is_multiple&&this.search_field.val(""),a(this.container[0].ownerDocument).bind("click.chosen",this.click_test_action),this.results_show()),this.activate_field())},Chosen.prototype.container_mouseup=function(a){return"ABBR"!==a.target.nodeName||this.is_disabled?void 0:this.results_reset(a)},Chosen.prototype.search_results_mousewheel=function(a){var b;return a.originalEvent&&(b=-a.originalEvent.wheelDelta||a.originalEvent.detail),null!=b?(a.preventDefault(),"DOMMouseScroll"===a.type&&(b=40*b),this.search_results.scrollTop(b+this.search_results.scrollTop())):void 0},Chosen.prototype.blur_test=function(){return!this.active_field&&this.container.hasClass("chosen-container-active")?this.close_field():void 0},Chosen.prototype.close_field=function(){return a(this.container[0].ownerDocument).unbind("click.chosen",this.click_test_action),this.active_field=!1,this.results_hide(),this.container.removeClass("chosen-container-active"),this.clear_backstroke(),this.show_search_field_default(),this.search_field_scale()},Chosen.prototype.activate_field=function(){return this.container.addClass("chosen-container-active"),this.active_field=!0,this.search_field.val(this.search_field.val()),this.search_field.focus()},Chosen.prototype.test_active_click=function(b){var c;return c=a(b.target).closest(".chosen-container"),c.length&&this.container[0]===c[0]?this.active_field=!0:this.close_field()},Chosen.prototype.results_build=function(){return this.parsing=!0,this.selected_option_count=null,this.results_data=SelectParser.select_to_array(this.form_field),this.is_multiple?this.search_choices.find("li.search-choice").remove():this.is_multiple||(this.single_set_selected_text(),this.disable_search||this.form_field.options.length<=this.disable_search_threshold?(this.search_field[0].readOnly=!0,this.container.addClass("chosen-container-single-nosearch")):(this.search_field[0].readOnly=!1,this.container.removeClass("chosen-container-single-nosearch"))),this.update_results_content(this.results_option_build({first:!0})),this.search_field_disabled(),this.show_search_field_default(),this.search_field_scale(),this.parsing=!1},Chosen.prototype.result_do_highlight=function(a){var b,c,d,e,f;if(a.length){if(this.result_clear_highlight(),this.result_highlight=a,this.result_highlight.addClass("highlighted"),d=parseInt(this.search_results.css("maxHeight"),10),f=this.search_results.scrollTop(),e=d+f,c=this.result_highlight.position().top+this.search_results.scrollTop(),b=c+this.result_highlight.outerHeight(),b>=e)return this.search_results.scrollTop(b-d>0?b-d:0);if(f>c)return this.search_results.scrollTop(c)}},Chosen.prototype.result_clear_highlight=function(){return this.result_highlight&&this.result_highlight.removeClass("highlighted"),this.result_highlight=null},Chosen.prototype.results_show=function(){return this.is_multiple&&this.max_selected_options<=this.choices_count()?(this.form_field_jq.trigger("chosen:maxselected",{chosen:this}),!1):(this.container.addClass("chosen-with-drop"),this.results_showing=!0,this.search_field.focus(),this.search_field.val(this.search_field.val()),this.winnow_results(),this.form_field_jq.trigger("chosen:showing_dropdown",{chosen:this}))},Chosen.prototype.update_results_content=function(a){return this.search_results.html(a)},Chosen.prototype.results_hide=function(){return this.results_showing&&(this.result_clear_highlight(),this.container.removeClass("chosen-with-drop"),this.form_field_jq.trigger("chosen:hiding_dropdown",{chosen:this})),this.results_showing=!1},Chosen.prototype.set_tab_index=function(){var a;return this.form_field.tabIndex?(a=this.form_field.tabIndex,this.form_field.tabIndex=-1,this.search_field[0].tabIndex=a):void 0},Chosen.prototype.set_label_behavior=function(){var b=this;return this.form_field_label=this.form_field_jq.parents("label"),!this.form_field_label.length&&this.form_field.id.length&&(this.form_field_label=a("label[for='"+this.form_field.id+"']")),this.form_field_label.length>0?this.form_field_label.bind("click.chosen",function(a){return b.is_multiple?b.container_mousedown(a):b.activate_field()}):void 0},Chosen.prototype.show_search_field_default=function(){return this.is_multiple&&this.choices_count()<1&&!this.active_field?(this.search_field.val(this.default_text),this.search_field.addClass("default")):(this.search_field.val(""),this.search_field.removeClass("default"))},Chosen.prototype.search_results_mouseup=function(b){var c;return c=a(b.target).hasClass("active-result")?a(b.target):a(b.target).parents(".active-result").first(),c.length?(this.result_highlight=c,this.result_select(b),this.search_field.focus()):void 0},Chosen.prototype.search_results_mouseover=function(b){var c;return c=a(b.target).hasClass("active-result")?a(b.target):a(b.target).parents(".active-result").first(),c?this.result_do_highlight(c):void 0},Chosen.prototype.search_results_mouseout=function(b){return a(b.target).hasClass("active-result")?this.result_clear_highlight():void 0},Chosen.prototype.choice_build=function(b){var c,d,e=this;return c=a("
    • ",{"class":"search-choice"}).html(""+b.html+""),b.disabled?c.addClass("search-choice-disabled"):(d=a("",{"class":"search-choice-close","data-option-array-index":b.array_index}),d.bind("click.chosen",function(a){return e.choice_destroy_link_click(a)}),c.append(d)),this.search_container.before(c)},Chosen.prototype.choice_destroy_link_click=function(b){return b.preventDefault(),b.stopPropagation(),this.is_disabled?void 0:this.choice_destroy(a(b.target))},Chosen.prototype.choice_destroy=function(a){return this.result_deselect(a[0].getAttribute("data-option-array-index"))?(this.show_search_field_default(),this.is_multiple&&this.choices_count()>0&&this.search_field.val().length<1&&this.results_hide(),a.parents("li").first().remove(),this.search_field_scale()):void 0},Chosen.prototype.results_reset=function(){return this.reset_single_select_options(),this.form_field.options[0].selected=!0,this.single_set_selected_text(),this.show_search_field_default(),this.results_reset_cleanup(),this.form_field_jq.trigger("change"),this.active_field?this.results_hide():void 0},Chosen.prototype.results_reset_cleanup=function(){return this.current_selectedIndex=this.form_field.selectedIndex,this.selected_item.find("abbr").remove()},Chosen.prototype.result_select=function(a){var b,c;return this.result_highlight?(b=this.result_highlight,this.result_clear_highlight(),this.is_multiple&&this.max_selected_options<=this.choices_count()?(this.form_field_jq.trigger("chosen:maxselected",{chosen:this}),!1):(this.is_multiple?b.removeClass("active-result"):this.reset_single_select_options(),c=this.results_data[b[0].getAttribute("data-option-array-index")],c.selected=!0,this.form_field.options[c.options_index].selected=!0,this.selected_option_count=null,this.is_multiple?this.choice_build(c):this.single_set_selected_text(c.text),(a.metaKey||a.ctrlKey)&&this.is_multiple||this.results_hide(),this.search_field.val(""),(this.is_multiple||this.form_field.selectedIndex!==this.current_selectedIndex)&&this.form_field_jq.trigger("change",{selected:this.form_field.options[c.options_index].value}),this.current_selectedIndex=this.form_field.selectedIndex,this.search_field_scale())):void 0},Chosen.prototype.single_set_selected_text=function(a){return null==a&&(a=this.default_text),a===this.default_text?this.selected_item.addClass("chosen-default"):(this.single_deselect_control_build(),this.selected_item.removeClass("chosen-default")),this.selected_item.find("span").text(a)},Chosen.prototype.result_deselect=function(a){var b;return b=this.results_data[a],this.form_field.options[b.options_index].disabled?!1:(b.selected=!1,this.form_field.options[b.options_index].selected=!1,this.selected_option_count=null,this.result_clear_highlight(),this.results_showing&&this.winnow_results(),this.form_field_jq.trigger("change",{deselected:this.form_field.options[b.options_index].value}),this.search_field_scale(),!0)},Chosen.prototype.single_deselect_control_build=function(){return this.allow_single_deselect?(this.selected_item.find("abbr").length||this.selected_item.find("span").first().after(''),this.selected_item.addClass("chosen-single-with-deselect")):void 0},Chosen.prototype.get_search_text=function(){return this.search_field.val()===this.default_text?"":a("
      ").text(a.trim(this.search_field.val())).html()},Chosen.prototype.winnow_results_set_highlight=function(){var a,b;return b=this.is_multiple?[]:this.search_results.find(".result-selected.active-result"),a=b.length?b.first():this.search_results.find(".active-result").first(),null!=a?this.result_do_highlight(a):void 0},Chosen.prototype.no_results=function(b){var c;return c=a('
    • '+this.results_none_found+' ""
    • '),c.find("span").first().html(b),this.search_results.append(c),this.form_field_jq.trigger("chosen:no_results",{chosen:this})},Chosen.prototype.no_results_clear=function(){return this.search_results.find(".no-results").remove()},Chosen.prototype.keydown_arrow=function(){var a;return this.results_showing&&this.result_highlight?(a=this.result_highlight.nextAll("li.active-result").first())?this.result_do_highlight(a):void 0:this.results_show()},Chosen.prototype.keyup_arrow=function(){var a;return this.results_showing||this.is_multiple?this.result_highlight?(a=this.result_highlight.prevAll("li.active-result"),a.length?this.result_do_highlight(a.first()):(this.choices_count()>0&&this.results_hide(),this.result_clear_highlight())):void 0:this.results_show()},Chosen.prototype.keydown_backstroke=function(){var a;return this.pending_backstroke?(this.choice_destroy(this.pending_backstroke.find("a").first()),this.clear_backstroke()):(a=this.search_container.siblings("li.search-choice").last(),a.length&&!a.hasClass("search-choice-disabled")?(this.pending_backstroke=a,this.single_backstroke_delete?this.keydown_backstroke():this.pending_backstroke.addClass("search-choice-focus")):void 0)},Chosen.prototype.clear_backstroke=function(){return this.pending_backstroke&&this.pending_backstroke.removeClass("search-choice-focus"),this.pending_backstroke=null},Chosen.prototype.keydown_checker=function(a){var b,c;switch(b=null!=(c=a.which)?c:a.keyCode,this.search_field_scale(),8!==b&&this.pending_backstroke&&this.clear_backstroke(),b){case 8:this.backstroke_length=this.search_field.val().length;break;case 9:this.results_showing&&!this.is_multiple&&this.result_select(a),this.mouse_on_container=!1;break;case 13:a.preventDefault();break;case 38:a.preventDefault(),this.keyup_arrow();break;case 40:a.preventDefault(),this.keydown_arrow()}},Chosen.prototype.search_field_scale=function(){var b,c,d,e,f,g,h,i,j;if(this.is_multiple){for(d=0,h=0,f="position:absolute; left: -1000px; top: -1000px; display:none;",g=["font-size","font-style","font-weight","font-family","line-height","text-transform","letter-spacing"],i=0,j=g.length;j>i;i++)e=g[i],f+=e+":"+this.search_field.css(e)+";";return b=a("
      ",{style:f}),b.text(this.search_field.val()),a("body").append(b),h=b.width()+25,b.remove(),c=this.container.outerWidth(),h>c-10&&(h=c-10),this.search_field.css({width:h+"px"})}},Chosen}(AbstractChosen)}.call(this); (function(factory){ if(typeof define==="function"&&define.amd){ define([ "jquery" ], factory); }else{ factory(jQuery); }}(function($){ $.ui=$.ui||{}; var version=$.ui.version="1.12.1"; var widgetUuid=0; var widgetSlice=Array.prototype.slice; $.cleanData=(function(orig){ return function(elems){ var events, elem, i; for(i=0;(elem=elems[ i ])!=null; i++){ try { events=$._data(elem, "events"); if(events&&events.remove){ $(elem).triggerHandler("remove"); }} catch(e){}} orig(elems); };})($.cleanData); $.widget=function(name, base, prototype){ var existingConstructor, constructor, basePrototype; var proxiedPrototype={}; var namespace=name.split(".")[ 0 ]; name=name.split(".")[ 1 ]; var fullName=namespace + "-" + name; if(!prototype){ prototype=base; base=$.Widget; } if($.isArray(prototype)){ prototype=$.extend.apply(null, [ {} ].concat(prototype)); } $.expr[ ":" ][ fullName.toLowerCase() ]=function(elem){ return !!$.data(elem, fullName); }; $[ namespace ]=$[ namespace ]||{}; existingConstructor=$[ namespace ][ name ]; constructor=$[ namespace ][ name ]=function(options, element){ if(!this._createWidget){ return new constructor(options, element); } if(arguments.length){ this._createWidget(options, element); }}; $.extend(constructor, existingConstructor, { version: prototype.version, _proto: $.extend({}, prototype), _childConstructors: [] }); basePrototype=new base(); basePrototype.options=$.widget.extend({}, basePrototype.options); $.each(prototype, function(prop, value){ if(!$.isFunction(value)){ proxiedPrototype[ prop ]=value; return; } proxiedPrototype[ prop ]=(function(){ function _super(){ return base.prototype[ prop ].apply(this, arguments); } function _superApply(args){ return base.prototype[ prop ].apply(this, args); } return function(){ var __super=this._super; var __superApply=this._superApply; var returnValue; this._super=_super; this._superApply=_superApply; returnValue=value.apply(this, arguments); this._super=__super; this._superApply=__superApply; return returnValue; };})(); }); constructor.prototype=$.widget.extend(basePrototype, { widgetEventPrefix: existingConstructor ?(basePrototype.widgetEventPrefix||name):name }, proxiedPrototype, { constructor: constructor, namespace: namespace, widgetName: name, widgetFullName: fullName }); if(existingConstructor){ $.each(existingConstructor._childConstructors, function(i, child){ var childPrototype=child.prototype; $.widget(childPrototype.namespace + "." + childPrototype.widgetName, constructor, child._proto); }); delete existingConstructor._childConstructors; }else{ base._childConstructors.push(constructor); } $.widget.bridge(name, constructor); return constructor; }; $.widget.extend=function(target){ var input=widgetSlice.call(arguments, 1); var inputIndex=0; var inputLength=input.length; var key; var value; for(; inputIndex < inputLength; inputIndex++){ for(key in input[ inputIndex ]){ value=input[ inputIndex ][ key ]; if(input[ inputIndex ].hasOwnProperty(key)&&value!==undefined){ if($.isPlainObject(value)){ target[ key ]=$.isPlainObject(target[ key ]) ? $.widget.extend({}, target[ key ], value) : $.widget.extend({}, value); }else{ target[ key ]=value; }} }} return target; }; $.widget.bridge=function(name, object){ var fullName=object.prototype.widgetFullName||name; $.fn[ name ]=function(options){ var isMethodCall=typeof options==="string"; var args=widgetSlice.call(arguments, 1); var returnValue=this; if(isMethodCall){ if(!this.length&&options==="instance"){ returnValue=undefined; }else{ this.each(function(){ var methodValue; var instance=$.data(this, fullName); if(options==="instance"){ returnValue=instance; return false; } if(!instance){ return $.error("cannot call methods on " + name + " prior to initialization; " + "attempted to call method '" + options + "'"); } if(!$.isFunction(instance[ options ])||options.charAt(0)==="_"){ return $.error("no such method '" + options + "' for " + name + " widget instance"); } methodValue=instance[ options ].apply(instance, args); if(methodValue!==instance&&methodValue!==undefined){ returnValue=methodValue&&methodValue.jquery ? returnValue.pushStack(methodValue.get()) : methodValue; return false; }}); }}else{ if(args.length){ options=$.widget.extend.apply(null, [ options ].concat(args)); } this.each(function(){ var instance=$.data(this, fullName); if(instance){ instance.option(options||{}); if(instance._init){ instance._init(); }}else{ $.data(this, fullName, new object(options, this)); }}); } return returnValue; };}; $.Widget=function(){}; $.Widget._childConstructors=[]; $.Widget.prototype={ widgetName: "widget", widgetEventPrefix: "", defaultElement: "
      ", options: { classes: {}, disabled: false, create: null }, _createWidget: function(options, element){ element=$(element||this.defaultElement||this)[ 0 ]; this.element=$(element); this.uuid=widgetUuid++; this.eventNamespace="." + this.widgetName + this.uuid; this.bindings=$(); this.hoverable=$(); this.focusable=$(); this.classesElementLookup={}; if(element!==this){ $.data(element, this.widgetFullName, this); this._on(true, this.element, { remove: function(event){ if(event.target===element){ this.destroy(); }} }); this.document=$(element.style ? element.ownerDocument : element.document||element); this.window=$(this.document[ 0 ].defaultView||this.document[ 0 ].parentWindow); } this.options=$.widget.extend({}, this.options, this._getCreateOptions(), options); this._create(); if(this.options.disabled){ this._setOptionDisabled(this.options.disabled); } this._trigger("create", null, this._getCreateEventData()); this._init(); }, _getCreateOptions: function(){ return {};}, _getCreateEventData: $.noop, _create: $.noop, _init: $.noop, destroy: function(){ var that=this; this._destroy(); $.each(this.classesElementLookup, function(key, value){ that._removeClass(value, key); }); this.element .off(this.eventNamespace) .removeData(this.widgetFullName); this.widget() .off(this.eventNamespace) .removeAttr("aria-disabled"); this.bindings.off(this.eventNamespace); }, _destroy: $.noop, widget: function(){ return this.element; }, option: function(key, value){ var options=key; var parts; var curOption; var i; if(arguments.length===0){ return $.widget.extend({}, this.options); } if(typeof key==="string"){ options={}; parts=key.split("."); key=parts.shift(); if(parts.length){ curOption=options[ key ]=$.widget.extend({}, this.options[ key ]); for(i=0; i < parts.length - 1; i++){ curOption[ parts[ i ] ]=curOption[ parts[ i ] ]||{}; curOption=curOption[ parts[ i ] ]; } key=parts.pop(); if(arguments.length===1){ return curOption[ key ]===undefined ? null:curOption[ key ]; } curOption[ key ]=value; }else{ if(arguments.length===1){ return this.options[ key ]===undefined ? null:this.options[ key ]; } options[ key ]=value; }} this._setOptions(options); return this; }, _setOptions: function(options){ var key; for(key in options){ this._setOption(key, options[ key ]); } return this; }, _setOption: function(key, value){ if(key==="classes"){ this._setOptionClasses(value); } this.options[ key ]=value; if(key==="disabled"){ this._setOptionDisabled(value); } return this; }, _setOptionClasses: function(value){ var classKey, elements, currentElements; for(classKey in value){ currentElements=this.classesElementLookup[ classKey ]; if(value[ classKey ]===this.options.classes[ classKey ] || !currentElements || !currentElements.length){ continue; } elements=$(currentElements.get()); this._removeClass(currentElements, classKey); elements.addClass(this._classes({ element: elements, keys: classKey, classes: value, add: true })); }}, _setOptionDisabled: function(value){ this._toggleClass(this.widget(), this.widgetFullName + "-disabled", null, !!value); if(value){ this._removeClass(this.hoverable, null, "ui-state-hover"); this._removeClass(this.focusable, null, "ui-state-focus"); }}, enable: function(){ return this._setOptions({ disabled: false }); }, disable: function(){ return this._setOptions({ disabled: true }); }, _classes: function(options){ var full=[]; var that=this; options=$.extend({ element: this.element, classes: this.options.classes||{}}, options); function processClassString(classes, checkOption){ var current, i; for(i=0; i < classes.length; i++){ current=that.classesElementLookup[ classes[ i ] ]||$(); if(options.add){ current=$($.unique(current.get().concat(options.element.get()))); }else{ current=$(current.not(options.element).get()); } that.classesElementLookup[ classes[ i ] ]=current; full.push(classes[ i ]); if(checkOption&&options.classes[ classes[ i ] ]){ full.push(options.classes[ classes[ i ] ]); }} } this._on(options.element, { "remove": "_untrackClassesElement" }); if(options.keys){ processClassString(options.keys.match(/\S+/g)||[], true); } if(options.extra){ processClassString(options.extra.match(/\S+/g)||[]); } return full.join(" "); }, _untrackClassesElement: function(event){ var that=this; $.each(that.classesElementLookup, function(key, value){ if($.inArray(event.target, value)!==-1){ that.classesElementLookup[ key ]=$(value.not(event.target).get()); }}); }, _removeClass: function(element, keys, extra){ return this._toggleClass(element, keys, extra, false); }, _addClass: function(element, keys, extra){ return this._toggleClass(element, keys, extra, true); }, _toggleClass: function(element, keys, extra, add){ add=(typeof add==="boolean") ? add:extra; var shift=(typeof element==="string"||element===null), options={ extra: shift ? keys:extra, keys: shift ? element:keys, element: shift ? this.element:element, add: add }; options.element.toggleClass(this._classes(options), add); return this; }, _on: function(suppressDisabledCheck, element, handlers){ var delegateElement; var instance=this; if(typeof suppressDisabledCheck!=="boolean"){ handlers=element; element=suppressDisabledCheck; suppressDisabledCheck=false; } if(!handlers){ handlers=element; element=this.element; delegateElement=this.widget(); }else{ element=delegateElement=$(element); this.bindings=this.bindings.add(element); } $.each(handlers, function(event, handler){ function handlerProxy(){ if(!suppressDisabledCheck && (instance.options.disabled===true || $(this).hasClass("ui-state-disabled"))){ return; } return(typeof handler==="string" ? instance[ handler ]:handler) .apply(instance, arguments); } if(typeof handler!=="string"){ handlerProxy.guid=handler.guid = handler.guid||handlerProxy.guid||$.guid++; } var match=event.match(/^([\w:-]*)\s*(.*)$/); var eventName=match[ 1 ] + instance.eventNamespace; var selector=match[ 2 ]; if(selector){ delegateElement.on(eventName, selector, handlerProxy); }else{ element.on(eventName, handlerProxy); }}); }, _off: function(element, eventName){ eventName=(eventName||"").split(" ").join(this.eventNamespace + " ") + this.eventNamespace; element.off(eventName).off(eventName); this.bindings=$(this.bindings.not(element).get()); this.focusable=$(this.focusable.not(element).get()); this.hoverable=$(this.hoverable.not(element).get()); }, _delay: function(handler, delay){ function handlerProxy(){ return(typeof handler==="string" ? instance[ handler ]:handler) .apply(instance, arguments); } var instance=this; return setTimeout(handlerProxy, delay||0); }, _hoverable: function(element){ this.hoverable=this.hoverable.add(element); this._on(element, { mouseenter: function(event){ this._addClass($(event.currentTarget), null, "ui-state-hover"); }, mouseleave: function(event){ this._removeClass($(event.currentTarget), null, "ui-state-hover"); }}); }, _focusable: function(element){ this.focusable=this.focusable.add(element); this._on(element, { focusin: function(event){ this._addClass($(event.currentTarget), null, "ui-state-focus"); }, focusout: function(event){ this._removeClass($(event.currentTarget), null, "ui-state-focus"); }}); }, _trigger: function(type, event, data){ var prop, orig; var callback=this.options[ type ]; data=data||{}; event=$.Event(event); event.type=(type===this.widgetEventPrefix ? type : this.widgetEventPrefix + type).toLowerCase(); event.target=this.element[ 0 ]; orig=event.originalEvent; if(orig){ for(prop in orig){ if(!(prop in event)){ event[ prop ]=orig[ prop ]; }} } this.element.trigger(event, data); return !($.isFunction(callback) && callback.apply(this.element[ 0 ], [ event ].concat(data))===false || event.isDefaultPrevented()); }}; $.each({ show: "fadeIn", hide: "fadeOut" }, function(method, defaultEffect){ $.Widget.prototype[ "_" + method ]=function(element, options, callback){ if(typeof options==="string"){ options={ effect: options };} var hasOptions; var effectName = !options ? method : options===true||typeof options==="number" ? defaultEffect : options.effect||defaultEffect; options=options||{}; if(typeof options==="number"){ options={ duration: options };} hasOptions = !$.isEmptyObject(options); options.complete=callback; if(options.delay){ element.delay(options.delay); } if(hasOptions&&$.effects&&$.effects.effect[ effectName ]){ element[ method ](options); }else if(effectName!==method&&element[ effectName ]){ element[ effectName ](options.duration, options.easing, callback); }else{ element.queue(function(next){ $(this)[ method ](); if(callback){ callback.call(element[ 0 ]); } next(); }); }};}); var widget=$.widget; (function(){ var cachedScrollbarWidth, max=Math.max, abs=Math.abs, rhorizontal=/left|center|right/, rvertical=/top|center|bottom/, roffset=/[\+\-]\d+(\.[\d]+)?%?/, rposition=/^\w+/, rpercent=/%$/, _position=$.fn.position; function getOffsets(offsets, width, height){ return [ parseFloat(offsets[ 0 ]) *(rpercent.test(offsets[ 0 ]) ? width / 100:1), parseFloat(offsets[ 1 ]) *(rpercent.test(offsets[ 1 ]) ? height / 100:1) ]; } function parseCss(element, property){ return parseInt($.css(element, property), 10)||0; } function getDimensions(elem){ var raw=elem[ 0 ]; if(raw.nodeType===9){ return { width: elem.width(), height: elem.height(), offset: { top: 0, left: 0 }};} if($.isWindow(raw)){ return { width: elem.width(), height: elem.height(), offset: { top: elem.scrollTop(), left: elem.scrollLeft() }};} if(raw.preventDefault){ return { width: 0, height: 0, offset: { top: raw.pageY, left: raw.pageX }};} return { width: elem.outerWidth(), height: elem.outerHeight(), offset: elem.offset() };} $.position={ scrollbarWidth: function(){ if(cachedScrollbarWidth!==undefined){ return cachedScrollbarWidth; } var w1, w2, div=$("
      " + "
      "), innerDiv=div.children()[ 0 ]; $("body").append(div); w1=innerDiv.offsetWidth; div.css("overflow", "scroll"); w2=innerDiv.offsetWidth; if(w1===w2){ w2=div[ 0 ].clientWidth; } div.remove(); return(cachedScrollbarWidth=w1 - w2); }, getScrollInfo: function(within){ var overflowX=within.isWindow||within.isDocument ? "" : within.element.css("overflow-x"), overflowY=within.isWindow||within.isDocument ? "" : within.element.css("overflow-y"), hasOverflowX=overflowX==="scroll" || (overflowX==="auto"&&within.width < within.element[ 0 ].scrollWidth), hasOverflowY=overflowY==="scroll" || (overflowY==="auto"&&within.height < within.element[ 0 ].scrollHeight); return { width: hasOverflowY ? $.position.scrollbarWidth():0, height: hasOverflowX ? $.position.scrollbarWidth():0 };}, getWithinInfo: function(element){ var withinElement=$(element||window), isWindow=$.isWindow(withinElement[ 0 ]), isDocument = !!withinElement[ 0 ]&&withinElement[ 0 ].nodeType===9, hasOffset = !isWindow&&!isDocument; return { element: withinElement, isWindow: isWindow, isDocument: isDocument, offset: hasOffset ? $(element).offset():{ left: 0, top: 0 }, scrollLeft: withinElement.scrollLeft(), scrollTop: withinElement.scrollTop(), width: withinElement.outerWidth(), height: withinElement.outerHeight() };}}; $.fn.position=function(options){ if(!options||!options.of){ return _position.apply(this, arguments); } options=$.extend({}, options); var atOffset, targetWidth, targetHeight, targetOffset, basePosition, dimensions, target=$(options.of), within=$.position.getWithinInfo(options.within), scrollInfo=$.position.getScrollInfo(within), collision=(options.collision||"flip").split(" "), offsets={}; dimensions=getDimensions(target); if(target[ 0 ].preventDefault){ options.at="left top"; } targetWidth=dimensions.width; targetHeight=dimensions.height; targetOffset=dimensions.offset; basePosition=$.extend({}, targetOffset); $.each([ "my", "at" ], function(){ var pos=(options[ this ]||"").split(" "), horizontalOffset, verticalOffset; if(pos.length===1){ pos=rhorizontal.test(pos[ 0 ]) ? pos.concat([ "center" ]) : rvertical.test(pos[ 0 ]) ? [ "center" ].concat(pos) : [ "center", "center" ]; } pos[ 0 ]=rhorizontal.test(pos[ 0 ]) ? pos[ 0 ]:"center"; pos[ 1 ]=rvertical.test(pos[ 1 ]) ? pos[ 1 ]:"center"; horizontalOffset=roffset.exec(pos[ 0 ]); verticalOffset=roffset.exec(pos[ 1 ]); offsets[ this ]=[ horizontalOffset ? horizontalOffset[ 0 ]:0, verticalOffset ? verticalOffset[ 0 ]:0 ]; options[ this ]=[ rposition.exec(pos[ 0 ])[ 0 ], rposition.exec(pos[ 1 ])[ 0 ] ]; }); if(collision.length===1){ collision[ 1 ]=collision[ 0 ]; } if(options.at[ 0 ]==="right"){ basePosition.left +=targetWidth; }else if(options.at[ 0 ]==="center"){ basePosition.left +=targetWidth / 2; } if(options.at[ 1 ]==="bottom"){ basePosition.top +=targetHeight; }else if(options.at[ 1 ]==="center"){ basePosition.top +=targetHeight / 2; } atOffset=getOffsets(offsets.at, targetWidth, targetHeight); basePosition.left +=atOffset[ 0 ]; basePosition.top +=atOffset[ 1 ]; return this.each(function(){ var collisionPosition, using, elem=$(this), elemWidth=elem.outerWidth(), elemHeight=elem.outerHeight(), marginLeft=parseCss(this, "marginLeft"), marginTop=parseCss(this, "marginTop"), collisionWidth=elemWidth + marginLeft + parseCss(this, "marginRight") + scrollInfo.width, collisionHeight=elemHeight + marginTop + parseCss(this, "marginBottom") + scrollInfo.height, position=$.extend({}, basePosition), myOffset=getOffsets(offsets.my, elem.outerWidth(), elem.outerHeight()); if(options.my[ 0 ]==="right"){ position.left -=elemWidth; }else if(options.my[ 0 ]==="center"){ position.left -=elemWidth / 2; } if(options.my[ 1 ]==="bottom"){ position.top -=elemHeight; }else if(options.my[ 1 ]==="center"){ position.top -=elemHeight / 2; } position.left +=myOffset[ 0 ]; position.top +=myOffset[ 1 ]; collisionPosition={ marginLeft: marginLeft, marginTop: marginTop }; $.each([ "left", "top" ], function(i, dir){ if($.ui.position[ collision[ i ] ]){ $.ui.position[ collision[ i ] ][ dir ](position, { targetWidth: targetWidth, targetHeight: targetHeight, elemWidth: elemWidth, elemHeight: elemHeight, collisionPosition: collisionPosition, collisionWidth: collisionWidth, collisionHeight: collisionHeight, offset: [ atOffset[ 0 ] + myOffset[ 0 ], atOffset [ 1 ] + myOffset[ 1 ] ], my: options.my, at: options.at, within: within, elem: elem }); }}); if(options.using){ using=function(props){ var left=targetOffset.left - position.left, right=left + targetWidth - elemWidth, top=targetOffset.top - position.top, bottom=top + targetHeight - elemHeight, feedback={ target: { element: target, left: targetOffset.left, top: targetOffset.top, width: targetWidth, height: targetHeight }, element: { element: elem, left: position.left, top: position.top, width: elemWidth, height: elemHeight }, horizontal: right < 0 ? "left":left > 0 ? "right":"center", vertical: bottom < 0 ? "top":top > 0 ? "bottom":"middle" }; if(targetWidth < elemWidth&&abs(left + right) < targetWidth){ feedback.horizontal="center"; } if(targetHeight < elemHeight&&abs(top + bottom) < targetHeight){ feedback.vertical="middle"; } if(max(abs(left), abs(right)) > max(abs(top), abs(bottom))){ feedback.important="horizontal"; }else{ feedback.important="vertical"; } options.using.call(this, props, feedback); };} elem.offset($.extend(position, { using: using })); }); }; $.ui.position={ fit: { left: function(position, data){ var within=data.within, withinOffset=within.isWindow ? within.scrollLeft:within.offset.left, outerWidth=within.width, collisionPosLeft=position.left - data.collisionPosition.marginLeft, overLeft=withinOffset - collisionPosLeft, overRight=collisionPosLeft + data.collisionWidth - outerWidth - withinOffset, newOverRight; if(data.collisionWidth > outerWidth){ if(overLeft > 0&&overRight <=0){ newOverRight=position.left + overLeft + data.collisionWidth - outerWidth - withinOffset; position.left +=overLeft - newOverRight; }else if(overRight > 0&&overLeft <=0){ position.left=withinOffset; }else{ if(overLeft > overRight){ position.left=withinOffset + outerWidth - data.collisionWidth; }else{ position.left=withinOffset; }} }else if(overLeft > 0){ position.left +=overLeft; }else if(overRight > 0){ position.left -=overRight; }else{ position.left=max(position.left - collisionPosLeft, position.left); }}, top: function(position, data){ var within=data.within, withinOffset=within.isWindow ? within.scrollTop:within.offset.top, outerHeight=data.within.height, collisionPosTop=position.top - data.collisionPosition.marginTop, overTop=withinOffset - collisionPosTop, overBottom=collisionPosTop + data.collisionHeight - outerHeight - withinOffset, newOverBottom; if(data.collisionHeight > outerHeight){ if(overTop > 0&&overBottom <=0){ newOverBottom=position.top + overTop + data.collisionHeight - outerHeight - withinOffset; position.top +=overTop - newOverBottom; }else if(overBottom > 0&&overTop <=0){ position.top=withinOffset; }else{ if(overTop > overBottom){ position.top=withinOffset + outerHeight - data.collisionHeight; }else{ position.top=withinOffset; }} }else if(overTop > 0){ position.top +=overTop; }else if(overBottom > 0){ position.top -=overBottom; }else{ position.top=max(position.top - collisionPosTop, position.top); }} }, flip: { left: function(position, data){ var within=data.within, withinOffset=within.offset.left + within.scrollLeft, outerWidth=within.width, offsetLeft=within.isWindow ? within.scrollLeft:within.offset.left, collisionPosLeft=position.left - data.collisionPosition.marginLeft, overLeft=collisionPosLeft - offsetLeft, overRight=collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft, myOffset=data.my[ 0 ]==="left" ? -data.elemWidth : data.my[ 0 ]==="right" ? data.elemWidth : 0, atOffset=data.at[ 0 ]==="left" ? data.targetWidth : data.at[ 0 ]==="right" ? -data.targetWidth : 0, offset=-2 * data.offset[ 0 ], newOverRight, newOverLeft; if(overLeft < 0){ newOverRight=position.left + myOffset + atOffset + offset + data.collisionWidth - outerWidth - withinOffset; if(newOverRight < 0||newOverRight < abs(overLeft)){ position.left +=myOffset + atOffset + offset; }}else if(overRight > 0){ newOverLeft=position.left - data.collisionPosition.marginLeft + myOffset + atOffset + offset - offsetLeft; if(newOverLeft > 0||abs(newOverLeft) < overRight){ position.left +=myOffset + atOffset + offset; }} }, top: function(position, data){ var within=data.within, withinOffset=within.offset.top + within.scrollTop, outerHeight=within.height, offsetTop=within.isWindow ? within.scrollTop:within.offset.top, collisionPosTop=position.top - data.collisionPosition.marginTop, overTop=collisionPosTop - offsetTop, overBottom=collisionPosTop + data.collisionHeight - outerHeight - offsetTop, top=data.my[ 1 ]==="top", myOffset=top ? -data.elemHeight : data.my[ 1 ]==="bottom" ? data.elemHeight : 0, atOffset=data.at[ 1 ]==="top" ? data.targetHeight : data.at[ 1 ]==="bottom" ? -data.targetHeight : 0, offset=-2 * data.offset[ 1 ], newOverTop, newOverBottom; if(overTop < 0){ newOverBottom=position.top + myOffset + atOffset + offset + data.collisionHeight - outerHeight - withinOffset; if(newOverBottom < 0||newOverBottom < abs(overTop)){ position.top +=myOffset + atOffset + offset; }}else if(overBottom > 0){ newOverTop=position.top - data.collisionPosition.marginTop + myOffset + atOffset + offset - offsetTop; if(newOverTop > 0||abs(newOverTop) < overBottom){ position.top +=myOffset + atOffset + offset; }} }}, flipfit: { left: function(){ $.ui.position.flip.left.apply(this, arguments); $.ui.position.fit.left.apply(this, arguments); }, top: function(){ $.ui.position.flip.top.apply(this, arguments); $.ui.position.fit.top.apply(this, arguments); }} };})(); var position=$.ui.position; var data=$.extend($.expr[ ":" ], { data: $.expr.createPseudo ? $.expr.createPseudo(function(dataName){ return function(elem){ return !!$.data(elem, dataName); };}) : function(elem, i, match){ return !!$.data(elem, match[ 3 ]); }}); var disableSelection=$.fn.extend({ disableSelection:(function(){ var eventType="onselectstart" in document.createElement("div") ? "selectstart" : "mousedown"; return function(){ return this.on(eventType + ".ui-disableSelection", function(event){ event.preventDefault(); }); };})(), enableSelection: function(){ return this.off(".ui-disableSelection"); }}); $.ui.focusable=function(element, hasTabindex){ var map, mapName, img, focusableIfVisible, fieldset, nodeName=element.nodeName.toLowerCase(); if("area"===nodeName){ map=element.parentNode; mapName=map.name; if(!element.href||!mapName||map.nodeName.toLowerCase()!=="map"){ return false; } img=$("img[usemap='#" + mapName + "']"); return img.length > 0&&img.is(":visible"); } if(/^(input|select|textarea|button|object)$/.test(nodeName)){ focusableIfVisible = !element.disabled; if(focusableIfVisible){ fieldset=$(element).closest("fieldset")[ 0 ]; if(fieldset){ focusableIfVisible = !fieldset.disabled; }} }else if("a"===nodeName){ focusableIfVisible=element.href||hasTabindex; }else{ focusableIfVisible=hasTabindex; } return focusableIfVisible&&$(element).is(":visible")&&visible($(element)); }; function visible(element){ var visibility=element.css("visibility"); while(visibility==="inherit"){ element=element.parent(); visibility=element.css("visibility"); } return visibility!=="hidden"; } $.extend($.expr[ ":" ], { focusable: function(element){ return $.ui.focusable(element, $.attr(element, "tabindex")!=null); }}); var focusable=$.ui.focusable; var form=$.fn.form=function(){ return typeof this[ 0 ].form==="string" ? this.closest("form"):$(this[ 0 ].form); }; var formResetMixin=$.ui.formResetMixin={ _formResetHandler: function(){ var form=$(this); setTimeout(function(){ var instances=form.data("ui-form-reset-instances"); $.each(instances, function(){ this.refresh(); }); }); }, _bindFormResetHandler: function(){ this.form=this.element.form(); if(!this.form.length){ return; } var instances=this.form.data("ui-form-reset-instances")||[]; if(!instances.length){ this.form.on("reset.ui-form-reset", this._formResetHandler); } instances.push(this); this.form.data("ui-form-reset-instances", instances); }, _unbindFormResetHandler: function(){ if(!this.form.length){ return; } var instances=this.form.data("ui-form-reset-instances"); instances.splice($.inArray(this, instances), 1); if(instances.length){ this.form.data("ui-form-reset-instances", instances); }else{ this.form .removeData("ui-form-reset-instances") .off("reset.ui-form-reset"); }} }; if($.fn.jquery.substring(0, 3)==="1.7"){ $.each([ "Width", "Height" ], function(i, name){ var side=name==="Width" ? [ "Left", "Right" ]:[ "Top", "Bottom" ], type=name.toLowerCase(), orig={ innerWidth: $.fn.innerWidth, innerHeight: $.fn.innerHeight, outerWidth: $.fn.outerWidth, outerHeight: $.fn.outerHeight }; function reduce(elem, size, border, margin){ $.each(side, function(){ size -=parseFloat($.css(elem, "padding" + this))||0; if(border){ size -=parseFloat($.css(elem, "border" + this + "Width"))||0; } if(margin){ size -=parseFloat($.css(elem, "margin" + this))||0; }}); return size; } $.fn[ "inner" + name ]=function(size){ if(size===undefined){ return orig[ "inner" + name ].call(this); } return this.each(function(){ $(this).css(type, reduce(this, size) + "px"); }); }; $.fn[ "outer" + name ]=function(size, margin){ if(typeof size!=="number"){ return orig[ "outer" + name ].call(this, size); } return this.each(function(){ $(this).css(type, reduce(this, size, true, margin) + "px"); }); };}); $.fn.addBack=function(selector){ return this.add(selector==null ? this.prevObject:this.prevObject.filter(selector) ); };} ; var keycode=$.ui.keyCode={ BACKSPACE: 8, COMMA: 188, DELETE: 46, DOWN: 40, END: 35, ENTER: 13, ESCAPE: 27, HOME: 36, LEFT: 37, PAGE_DOWN: 34, PAGE_UP: 33, PERIOD: 190, RIGHT: 39, SPACE: 32, TAB: 9, UP: 38 }; var escapeSelector=$.ui.escapeSelector=(function(){ var selectorEscape=/([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g; return function(selector){ return selector.replace(selectorEscape, "\\$1"); };})(); var labels=$.fn.labels=function(){ var ancestor, selector, id, labels, ancestors; if(this[ 0 ].labels&&this[ 0 ].labels.length){ return this.pushStack(this[ 0 ].labels); } labels=this.eq(0).parents("label"); id=this.attr("id"); if(id){ ancestor=this.eq(0).parents().last(); ancestors=ancestor.add(ancestor.length ? ancestor.siblings():this.siblings()); selector="label[for='" + $.ui.escapeSelector(id) + "']"; labels=labels.add(ancestors.find(selector).addBack(selector)); } return this.pushStack(labels); }; var scrollParent=$.fn.scrollParent=function(includeHidden){ var position=this.css("position"), excludeStaticParent=position==="absolute", overflowRegex=includeHidden ? /(auto|scroll|hidden)/:/(auto|scroll)/, scrollParent=this.parents().filter(function(){ var parent=$(this); if(excludeStaticParent&&parent.css("position")==="static"){ return false; } return overflowRegex.test(parent.css("overflow") + parent.css("overflow-y") + parent.css("overflow-x")); }).eq(0); return position==="fixed"||!scrollParent.length ? $(this[ 0 ].ownerDocument||document) : scrollParent; }; var tabbable=$.extend($.expr[ ":" ], { tabbable: function(element){ var tabIndex=$.attr(element, "tabindex"), hasTabindex=tabIndex!=null; return(!hasTabindex||tabIndex >=0)&&$.ui.focusable(element, hasTabindex); }}); var uniqueId=$.fn.extend({ uniqueId:(function(){ var uuid=0; return function(){ return this.each(function(){ if(!this.id){ this.id="ui-id-" + ( ++uuid); }}); };})(), removeUniqueId: function(){ return this.each(function(){ if(/^ui-id-\d+$/.test(this.id)){ $(this).removeAttr("id"); }}); }}); var ie=$.ui.ie = !!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase()); var mouseHandled=false; $(document).on("mouseup", function(){ mouseHandled=false; }); var widgetsMouse=$.widget("ui.mouse", { version: "1.12.1", options: { cancel: "input, textarea, button, select, option", distance: 1, delay: 0 }, _mouseInit: function(){ var that=this; this.element .on("mousedown." + this.widgetName, function(event){ return that._mouseDown(event); }) .on("click." + this.widgetName, function(event){ if(true===$.data(event.target, that.widgetName + ".preventClickEvent")){ $.removeData(event.target, that.widgetName + ".preventClickEvent"); event.stopImmediatePropagation(); return false; }}); this.started=false; }, _mouseDestroy: function(){ this.element.off("." + this.widgetName); if(this._mouseMoveDelegate){ this.document .off("mousemove." + this.widgetName, this._mouseMoveDelegate) .off("mouseup." + this.widgetName, this._mouseUpDelegate); }}, _mouseDown: function(event){ if(mouseHandled){ return; } this._mouseMoved=false; (this._mouseStarted&&this._mouseUp(event)); this._mouseDownEvent=event; var that=this, btnIsLeft=(event.which===1), elIsCancel=(typeof this.options.cancel==="string"&&event.target.nodeName ? $(event.target).closest(this.options.cancel).length:false); if(!btnIsLeft||elIsCancel||!this._mouseCapture(event)){ return true; } this.mouseDelayMet = !this.options.delay; if(!this.mouseDelayMet){ this._mouseDelayTimer=setTimeout(function(){ that.mouseDelayMet=true; }, this.options.delay); } if(this._mouseDistanceMet(event)&&this._mouseDelayMet(event)){ this._mouseStarted=(this._mouseStart(event)!==false); if(!this._mouseStarted){ event.preventDefault(); return true; }} if(true===$.data(event.target, this.widgetName + ".preventClickEvent")){ $.removeData(event.target, this.widgetName + ".preventClickEvent"); } this._mouseMoveDelegate=function(event){ return that._mouseMove(event); }; this._mouseUpDelegate=function(event){ return that._mouseUp(event); }; this.document .on("mousemove." + this.widgetName, this._mouseMoveDelegate) .on("mouseup." + this.widgetName, this._mouseUpDelegate); event.preventDefault(); mouseHandled=true; return true; }, _mouseMove: function(event){ if(this._mouseMoved){ if($.ui.ie&&(!document.documentMode||document.documentMode < 9) && !event.button){ return this._mouseUp(event); }else if(!event.which){ if(event.originalEvent.altKey||event.originalEvent.ctrlKey || event.originalEvent.metaKey||event.originalEvent.shiftKey){ this.ignoreMissingWhich=true; }else if(!this.ignoreMissingWhich){ return this._mouseUp(event); }} } if(event.which||event.button){ this._mouseMoved=true; } if(this._mouseStarted){ this._mouseDrag(event); return event.preventDefault(); } if(this._mouseDistanceMet(event)&&this._mouseDelayMet(event)){ this._mouseStarted = (this._mouseStart(this._mouseDownEvent, event)!==false); (this._mouseStarted ? this._mouseDrag(event):this._mouseUp(event)); } return !this._mouseStarted; }, _mouseUp: function(event){ this.document .off("mousemove." + this.widgetName, this._mouseMoveDelegate) .off("mouseup." + this.widgetName, this._mouseUpDelegate); if(this._mouseStarted){ this._mouseStarted=false; if(event.target===this._mouseDownEvent.target){ $.data(event.target, this.widgetName + ".preventClickEvent", true); } this._mouseStop(event); } if(this._mouseDelayTimer){ clearTimeout(this._mouseDelayTimer); delete this._mouseDelayTimer; } this.ignoreMissingWhich=false; mouseHandled=false; event.preventDefault(); }, _mouseDistanceMet: function(event){ return(Math.max(Math.abs(this._mouseDownEvent.pageX - event.pageX), Math.abs(this._mouseDownEvent.pageY - event.pageY) ) >=this.options.distance ); }, _mouseDelayMet: function(){ return this.mouseDelayMet; }, _mouseStart: function(){}, _mouseDrag: function(){}, _mouseStop: function(){}, _mouseCapture: function(){ return true; }}); var plugin=$.ui.plugin={ add: function(module, option, set){ var i, proto=$.ui[ module ].prototype; for(i in set){ proto.plugins[ i ]=proto.plugins[ i ]||[]; proto.plugins[ i ].push([ option, set[ i ] ]); }}, call: function(instance, name, args, allowDisconnected){ var i, set=instance.plugins[ name ]; if(!set){ return; } if(!allowDisconnected&&(!instance.element[ 0 ].parentNode || instance.element[ 0 ].parentNode.nodeType===11)){ return; } for(i=0; i < set.length; i++){ if(instance.options[ set[ i ][ 0 ] ]){ set[ i ][ 1 ].apply(instance.element, args); }} }}; var safeActiveElement=$.ui.safeActiveElement=function(document){ var activeElement; try { activeElement=document.activeElement; } catch(error){ activeElement=document.body; } if(!activeElement){ activeElement=document.body; } if(!activeElement.nodeName){ activeElement=document.body; } return activeElement; }; var safeBlur=$.ui.safeBlur=function(element){ if(element&&element.nodeName.toLowerCase()!=="body"){ $(element).trigger("blur"); }}; $.widget("ui.draggable", $.ui.mouse, { version: "1.12.1", widgetEventPrefix: "drag", options: { addClasses: true, appendTo: "parent", axis: false, connectToSortable: false, containment: false, cursor: "auto", cursorAt: false, grid: false, handle: false, helper: "original", iframeFix: false, opacity: false, refreshPositions: false, revert: false, revertDuration: 500, scope: "default", scroll: true, scrollSensitivity: 20, scrollSpeed: 20, snap: false, snapMode: "both", snapTolerance: 20, stack: false, zIndex: false, drag: null, start: null, stop: null }, _create: function(){ if(this.options.helper==="original"){ this._setPositionRelative(); } if(this.options.addClasses){ this._addClass("ui-draggable"); } this._setHandleClassName(); this._mouseInit(); }, _setOption: function(key, value){ this._super(key, value); if(key==="handle"){ this._removeHandleClassName(); this._setHandleClassName(); }}, _destroy: function(){ if(( this.helper||this.element).is(".ui-draggable-dragging")){ this.destroyOnClear=true; return; } this._removeHandleClassName(); this._mouseDestroy(); }, _mouseCapture: function(event){ var o=this.options; if(this.helper||o.disabled || $(event.target).closest(".ui-resizable-handle").length > 0){ return false; } this.handle=this._getHandle(event); if(!this.handle){ return false; } this._blurActiveElement(event); this._blockFrames(o.iframeFix===true ? "iframe":o.iframeFix); return true; }, _blockFrames: function(selector){ this.iframeBlocks=this.document.find(selector).map(function(){ var iframe=$(this); return $("
      ") .css("position", "absolute") .appendTo(iframe.parent()) .outerWidth(iframe.outerWidth()) .outerHeight(iframe.outerHeight()) .offset(iframe.offset())[ 0 ]; }); }, _unblockFrames: function(){ if(this.iframeBlocks){ this.iframeBlocks.remove(); delete this.iframeBlocks; }}, _blurActiveElement: function(event){ var activeElement=$.ui.safeActiveElement(this.document[ 0 ]), target=$(event.target); if(target.closest(activeElement).length){ return; } $.ui.safeBlur(activeElement); }, _mouseStart: function(event){ var o=this.options; this.helper=this._createHelper(event); this._addClass(this.helper, "ui-draggable-dragging"); this._cacheHelperProportions(); if($.ui.ddmanager){ $.ui.ddmanager.current=this; } this._cacheMargins(); this.cssPosition=this.helper.css("position"); this.scrollParent=this.helper.scrollParent(true); this.offsetParent=this.helper.offsetParent(); this.hasFixedAncestor=this.helper.parents().filter(function(){ return $(this).css("position")==="fixed"; }).length > 0; this.positionAbs=this.element.offset(); this._refreshOffsets(event); this.originalPosition=this.position=this._generatePosition(event, false); this.originalPageX=event.pageX; this.originalPageY=event.pageY; (o.cursorAt&&this._adjustOffsetFromHelper(o.cursorAt)); this._setContainment(); if(this._trigger("start", event)===false){ this._clear(); return false; } this._cacheHelperProportions(); if($.ui.ddmanager&&!o.dropBehaviour){ $.ui.ddmanager.prepareOffsets(this, event); } this._mouseDrag(event, true); if($.ui.ddmanager){ $.ui.ddmanager.dragStart(this, event); } return true; }, _refreshOffsets: function(event){ this.offset={ top: this.positionAbs.top - this.margins.top, left: this.positionAbs.left - this.margins.left, scroll: false, parent: this._getParentOffset(), relative: this._getRelativeOffset() }; this.offset.click={ left: event.pageX - this.offset.left, top: event.pageY - this.offset.top };}, _mouseDrag: function(event, noPropagation){ if(this.hasFixedAncestor){ this.offset.parent=this._getParentOffset(); } this.position=this._generatePosition(event, true); this.positionAbs=this._convertPositionTo("absolute"); if(!noPropagation){ var ui=this._uiHash(); if(this._trigger("drag", event, ui)===false){ this._mouseUp(new $.Event("mouseup", event)); return false; } this.position=ui.position; } this.helper[ 0 ].style.left=this.position.left + "px"; this.helper[ 0 ].style.top=this.position.top + "px"; if($.ui.ddmanager){ $.ui.ddmanager.drag(this, event); } return false; }, _mouseStop: function(event){ var that=this, dropped=false; if($.ui.ddmanager&&!this.options.dropBehaviour){ dropped=$.ui.ddmanager.drop(this, event); } if(this.dropped){ dropped=this.dropped; this.dropped=false; } if(( this.options.revert==="invalid"&&!dropped) || (this.options.revert==="valid"&&dropped) || this.options.revert===true||($.isFunction(this.options.revert) && this.options.revert.call(this.element, dropped)) ){ $(this.helper).animate(this.originalPosition, parseInt(this.options.revertDuration, 10), function(){ if(that._trigger("stop", event)!==false){ that._clear(); }} ); }else{ if(this._trigger("stop", event)!==false){ this._clear(); }} return false; }, _mouseUp: function(event){ this._unblockFrames(); if($.ui.ddmanager){ $.ui.ddmanager.dragStop(this, event); } if(this.handleElement.is(event.target)){ this.element.trigger("focus"); } return $.ui.mouse.prototype._mouseUp.call(this, event); }, cancel: function(){ if(this.helper.is(".ui-draggable-dragging")){ this._mouseUp(new $.Event("mouseup", { target: this.element[ 0 ] })); }else{ this._clear(); } return this; }, _getHandle: function(event){ return this.options.handle ? !!$(event.target).closest(this.element.find(this.options.handle)).length : true; }, _setHandleClassName: function(){ this.handleElement=this.options.handle ? this.element.find(this.options.handle):this.element; this._addClass(this.handleElement, "ui-draggable-handle"); }, _removeHandleClassName: function(){ this._removeClass(this.handleElement, "ui-draggable-handle"); }, _createHelper: function(event){ var o=this.options, helperIsFunction=$.isFunction(o.helper), helper=helperIsFunction ? $(o.helper.apply(this.element[ 0 ], [ event ])) : (o.helper==="clone" ? this.element.clone().removeAttr("id") : this.element); if(!helper.parents("body").length){ helper.appendTo(( o.appendTo==="parent" ? this.element[ 0 ].parentNode : o.appendTo)); } if(helperIsFunction&&helper[ 0 ]===this.element[ 0 ]){ this._setPositionRelative(); } if(helper[ 0 ]!==this.element[ 0 ] && !(/(fixed|absolute)/).test(helper.css("position"))){ helper.css("position", "absolute"); } return helper; }, _setPositionRelative: function(){ if(!(/^(?:r|a|f)/).test(this.element.css("position"))){ this.element[ 0 ].style.position="relative"; }}, _adjustOffsetFromHelper: function(obj){ if(typeof obj==="string"){ obj=obj.split(" "); } if($.isArray(obj)){ obj={ left: +obj[ 0 ], top: +obj[ 1 ]||0 };} if("left" in obj){ this.offset.click.left=obj.left + this.margins.left; } if("right" in obj){ this.offset.click.left=this.helperProportions.width - obj.right + this.margins.left; } if("top" in obj){ this.offset.click.top=obj.top + this.margins.top; } if("bottom" in obj){ this.offset.click.top=this.helperProportions.height - obj.bottom + this.margins.top; }}, _isRootNode: function(element){ return(/(html|body)/i).test(element.tagName)||element===this.document[ 0 ]; }, _getParentOffset: function(){ var po=this.offsetParent.offset(), document=this.document[ 0 ]; if(this.cssPosition==="absolute"&&this.scrollParent[ 0 ]!==document && $.contains(this.scrollParent[ 0 ], this.offsetParent[ 0 ])){ po.left +=this.scrollParent.scrollLeft(); po.top +=this.scrollParent.scrollTop(); } if(this._isRootNode(this.offsetParent[ 0 ])){ po={ top: 0, left: 0 };} return { top: po.top +(parseInt(this.offsetParent.css("borderTopWidth"), 10)||0), left: po.left +(parseInt(this.offsetParent.css("borderLeftWidth"), 10)||0) };}, _getRelativeOffset: function(){ if(this.cssPosition!=="relative"){ return { top: 0, left: 0 };} var p=this.element.position(), scrollIsRootNode=this._isRootNode(this.scrollParent[ 0 ]); return { top: p.top -(parseInt(this.helper.css("top"), 10)||0) + (!scrollIsRootNode ? this.scrollParent.scrollTop():0), left: p.left -(parseInt(this.helper.css("left"), 10)||0) + (!scrollIsRootNode ? this.scrollParent.scrollLeft():0) };}, _cacheMargins: function(){ this.margins={ left:(parseInt(this.element.css("marginLeft"), 10)||0), top:(parseInt(this.element.css("marginTop"), 10)||0), right:(parseInt(this.element.css("marginRight"), 10)||0), bottom:(parseInt(this.element.css("marginBottom"), 10)||0) };}, _cacheHelperProportions: function(){ this.helperProportions={ width: this.helper.outerWidth(), height: this.helper.outerHeight() };}, _setContainment: function(){ var isUserScrollable, c, ce, o=this.options, document=this.document[ 0 ]; this.relativeContainer=null; if(!o.containment){ this.containment=null; return; } if(o.containment==="window"){ this.containment=[ $(window).scrollLeft() - this.offset.relative.left - this.offset.parent.left, $(window).scrollTop() - this.offset.relative.top - this.offset.parent.top, $(window).scrollLeft() + $(window).width() - this.helperProportions.width - this.margins.left, $(window).scrollTop() + ($(window).height()||document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top ]; return; } if(o.containment==="document"){ this.containment=[ 0, 0, $(document).width() - this.helperProportions.width - this.margins.left, ($(document).height()||document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top ]; return; } if(o.containment.constructor===Array){ this.containment=o.containment; return; } if(o.containment==="parent"){ o.containment=this.helper[ 0 ].parentNode; } c=$(o.containment); ce=c[ 0 ]; if(!ce){ return; } isUserScrollable=/(scroll|auto)/.test(c.css("overflow")); this.containment=[ (parseInt(c.css("borderLeftWidth"), 10)||0) + (parseInt(c.css("paddingLeft"), 10)||0), (parseInt(c.css("borderTopWidth"), 10)||0) + (parseInt(c.css("paddingTop"), 10)||0), (isUserScrollable ? Math.max(ce.scrollWidth, ce.offsetWidth):ce.offsetWidth) - (parseInt(c.css("borderRightWidth"), 10)||0) - (parseInt(c.css("paddingRight"), 10)||0) - this.helperProportions.width - this.margins.left - this.margins.right, (isUserScrollable ? Math.max(ce.scrollHeight, ce.offsetHeight):ce.offsetHeight) - (parseInt(c.css("borderBottomWidth"), 10)||0) - (parseInt(c.css("paddingBottom"), 10)||0) - this.helperProportions.height - this.margins.top - this.margins.bottom ]; this.relativeContainer=c; }, _convertPositionTo: function(d, pos){ if(!pos){ pos=this.position; } var mod=d==="absolute" ? 1:-1, scrollIsRootNode=this._isRootNode(this.scrollParent[ 0 ]); return { top: ( pos.top + this.offset.relative.top * mod + this.offset.parent.top * mod - (( this.cssPosition==="fixed" ? -this.offset.scroll.top : (scrollIsRootNode ? 0:this.offset.scroll.top)) * mod) ), left: ( pos.left + this.offset.relative.left * mod + this.offset.parent.left * mod - (( this.cssPosition==="fixed" ? -this.offset.scroll.left : (scrollIsRootNode ? 0:this.offset.scroll.left)) * mod) ) };}, _generatePosition: function(event, constrainPosition){ var containment, co, top, left, o=this.options, scrollIsRootNode=this._isRootNode(this.scrollParent[ 0 ]), pageX=event.pageX, pageY=event.pageY; if(!scrollIsRootNode||!this.offset.scroll){ this.offset.scroll={ top: this.scrollParent.scrollTop(), left: this.scrollParent.scrollLeft() };} if(constrainPosition){ if(this.containment){ if(this.relativeContainer){ co=this.relativeContainer.offset(); containment=[ this.containment[ 0 ] + co.left, this.containment[ 1 ] + co.top, this.containment[ 2 ] + co.left, this.containment[ 3 ] + co.top ]; }else{ containment=this.containment; } if(event.pageX - this.offset.click.left < containment[ 0 ]){ pageX=containment[ 0 ] + this.offset.click.left; } if(event.pageY - this.offset.click.top < containment[ 1 ]){ pageY=containment[ 1 ] + this.offset.click.top; } if(event.pageX - this.offset.click.left > containment[ 2 ]){ pageX=containment[ 2 ] + this.offset.click.left; } if(event.pageY - this.offset.click.top > containment[ 3 ]){ pageY=containment[ 3 ] + this.offset.click.top; }} if(o.grid){ top=o.grid[ 1 ] ? this.originalPageY + Math.round(( pageY - this.originalPageY) / o.grid[ 1 ]) * o.grid[ 1 ]:this.originalPageY; pageY=containment ?(( top - this.offset.click.top >=containment[ 1 ] || top - this.offset.click.top > containment[ 3 ]) ? top : (( top - this.offset.click.top >=containment[ 1 ]) ? top - o.grid[ 1 ]:top + o.grid[ 1 ])):top; left=o.grid[ 0 ] ? this.originalPageX + Math.round(( pageX - this.originalPageX) / o.grid[ 0 ]) * o.grid[ 0 ] : this.originalPageX; pageX=containment ?(( left - this.offset.click.left >=containment[ 0 ] || left - this.offset.click.left > containment[ 2 ]) ? left : (( left - this.offset.click.left >=containment[ 0 ]) ? left - o.grid[ 0 ]:left + o.grid[ 0 ])):left; } if(o.axis==="y"){ pageX=this.originalPageX; } if(o.axis==="x"){ pageY=this.originalPageY; }} return { top: ( pageY - this.offset.click.top - this.offset.relative.top - this.offset.parent.top + (this.cssPosition==="fixed" ? -this.offset.scroll.top : (scrollIsRootNode ? 0:this.offset.scroll.top)) ), left: ( pageX - this.offset.click.left - this.offset.relative.left - this.offset.parent.left + (this.cssPosition==="fixed" ? -this.offset.scroll.left : (scrollIsRootNode ? 0:this.offset.scroll.left)) ) };}, _clear: function(){ this._removeClass(this.helper, "ui-draggable-dragging"); if(this.helper[ 0 ]!==this.element[ 0 ]&&!this.cancelHelperRemoval){ this.helper.remove(); } this.helper=null; this.cancelHelperRemoval=false; if(this.destroyOnClear){ this.destroy(); }}, _trigger: function(type, event, ui){ ui=ui||this._uiHash(); $.ui.plugin.call(this, type, [ event, ui, this ], true); if(/^(drag|start|stop)/.test(type)){ this.positionAbs=this._convertPositionTo("absolute"); ui.offset=this.positionAbs; } return $.Widget.prototype._trigger.call(this, type, event, ui); }, plugins: {}, _uiHash: function(){ return { helper: this.helper, position: this.position, originalPosition: this.originalPosition, offset: this.positionAbs };}}); $.ui.plugin.add("draggable", "connectToSortable", { start: function(event, ui, draggable){ var uiSortable=$.extend({}, ui, { item: draggable.element }); draggable.sortables=[]; $(draggable.options.connectToSortable).each(function(){ var sortable=$(this).sortable("instance"); if(sortable&&!sortable.options.disabled){ draggable.sortables.push(sortable); sortable.refreshPositions(); sortable._trigger("activate", event, uiSortable); }}); }, stop: function(event, ui, draggable){ var uiSortable=$.extend({}, ui, { item: draggable.element }); draggable.cancelHelperRemoval=false; $.each(draggable.sortables, function(){ var sortable=this; if(sortable.isOver){ sortable.isOver=0; draggable.cancelHelperRemoval=true; sortable.cancelHelperRemoval=false; sortable._storedCSS={ position: sortable.placeholder.css("position"), top: sortable.placeholder.css("top"), left: sortable.placeholder.css("left") }; sortable._mouseStop(event); sortable.options.helper=sortable.options._helper; }else{ sortable.cancelHelperRemoval=true; sortable._trigger("deactivate", event, uiSortable); }}); }, drag: function(event, ui, draggable){ $.each(draggable.sortables, function(){ var innermostIntersecting=false, sortable=this; sortable.positionAbs=draggable.positionAbs; sortable.helperProportions=draggable.helperProportions; sortable.offset.click=draggable.offset.click; if(sortable._intersectsWith(sortable.containerCache)){ innermostIntersecting=true; $.each(draggable.sortables, function(){ this.positionAbs=draggable.positionAbs; this.helperProportions=draggable.helperProportions; this.offset.click=draggable.offset.click; if(this!==sortable && this._intersectsWith(this.containerCache) && $.contains(sortable.element[ 0 ], this.element[ 0 ])){ innermostIntersecting=false; } return innermostIntersecting; }); } if(innermostIntersecting){ if(!sortable.isOver){ sortable.isOver=1; draggable._parent=ui.helper.parent(); sortable.currentItem=ui.helper .appendTo(sortable.element) .data("ui-sortable-item", true); sortable.options._helper=sortable.options.helper; sortable.options.helper=function(){ return ui.helper[ 0 ]; }; event.target=sortable.currentItem[ 0 ]; sortable._mouseCapture(event, true); sortable._mouseStart(event, true, true); sortable.offset.click.top=draggable.offset.click.top; sortable.offset.click.left=draggable.offset.click.left; sortable.offset.parent.left -=draggable.offset.parent.left - sortable.offset.parent.left; sortable.offset.parent.top -=draggable.offset.parent.top - sortable.offset.parent.top; draggable._trigger("toSortable", event); draggable.dropped=sortable.element; $.each(draggable.sortables, function(){ this.refreshPositions(); }); draggable.currentItem=draggable.element; sortable.fromOutside=draggable; } if(sortable.currentItem){ sortable._mouseDrag(event); ui.position=sortable.position; }}else{ if(sortable.isOver){ sortable.isOver=0; sortable.cancelHelperRemoval=true; sortable.options._revert=sortable.options.revert; sortable.options.revert=false; sortable._trigger("out", event, sortable._uiHash(sortable)); sortable._mouseStop(event, true); sortable.options.revert=sortable.options._revert; sortable.options.helper=sortable.options._helper; if(sortable.placeholder){ sortable.placeholder.remove(); } ui.helper.appendTo(draggable._parent); draggable._refreshOffsets(event); ui.position=draggable._generatePosition(event, true); draggable._trigger("fromSortable", event); draggable.dropped=false; $.each(draggable.sortables, function(){ this.refreshPositions(); }); }} }); }}); $.ui.plugin.add("draggable", "cursor", { start: function(event, ui, instance){ var t=$("body"), o=instance.options; if(t.css("cursor")){ o._cursor=t.css("cursor"); } t.css("cursor", o.cursor); }, stop: function(event, ui, instance){ var o=instance.options; if(o._cursor){ $("body").css("cursor", o._cursor); }} }); $.ui.plugin.add("draggable", "opacity", { start: function(event, ui, instance){ var t=$(ui.helper), o=instance.options; if(t.css("opacity")){ o._opacity=t.css("opacity"); } t.css("opacity", o.opacity); }, stop: function(event, ui, instance){ var o=instance.options; if(o._opacity){ $(ui.helper).css("opacity", o._opacity); }} }); $.ui.plugin.add("draggable", "scroll", { start: function(event, ui, i){ if(!i.scrollParentNotHidden){ i.scrollParentNotHidden=i.helper.scrollParent(false); } if(i.scrollParentNotHidden[ 0 ]!==i.document[ 0 ] && i.scrollParentNotHidden[ 0 ].tagName!=="HTML"){ i.overflowOffset=i.scrollParentNotHidden.offset(); }}, drag: function(event, ui, i){ var o=i.options, scrolled=false, scrollParent=i.scrollParentNotHidden[ 0 ], document=i.document[ 0 ]; if(scrollParent!==document&&scrollParent.tagName!=="HTML"){ if(!o.axis||o.axis!=="x"){ if(( i.overflowOffset.top + scrollParent.offsetHeight) - event.pageY < o.scrollSensitivity){ scrollParent.scrollTop=scrolled=scrollParent.scrollTop + o.scrollSpeed; }else if(event.pageY - i.overflowOffset.top < o.scrollSensitivity){ scrollParent.scrollTop=scrolled=scrollParent.scrollTop - o.scrollSpeed; }} if(!o.axis||o.axis!=="y"){ if(( i.overflowOffset.left + scrollParent.offsetWidth) - event.pageX < o.scrollSensitivity){ scrollParent.scrollLeft=scrolled=scrollParent.scrollLeft + o.scrollSpeed; }else if(event.pageX - i.overflowOffset.left < o.scrollSensitivity){ scrollParent.scrollLeft=scrolled=scrollParent.scrollLeft - o.scrollSpeed; }} }else{ if(!o.axis||o.axis!=="x"){ if(event.pageY - $(document).scrollTop() < o.scrollSensitivity){ scrolled=$(document).scrollTop($(document).scrollTop() - o.scrollSpeed); }else if($(window).height() -(event.pageY - $(document).scrollTop()) < o.scrollSensitivity){ scrolled=$(document).scrollTop($(document).scrollTop() + o.scrollSpeed); }} if(!o.axis||o.axis!=="y"){ if(event.pageX - $(document).scrollLeft() < o.scrollSensitivity){ scrolled=$(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed ); }else if($(window).width() -(event.pageX - $(document).scrollLeft()) < o.scrollSensitivity){ scrolled=$(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed ); }} } if(scrolled!==false&&$.ui.ddmanager&&!o.dropBehaviour){ $.ui.ddmanager.prepareOffsets(i, event); }} }); $.ui.plugin.add("draggable", "snap", { start: function(event, ui, i){ var o=i.options; i.snapElements=[]; $(o.snap.constructor!==String ?(o.snap.items||":data(ui-draggable)"):o.snap) .each(function(){ var $t=$(this), $o=$t.offset(); if(this!==i.element[ 0 ]){ i.snapElements.push({ item: this, width: $t.outerWidth(), height: $t.outerHeight(), top: $o.top, left: $o.left }); }}); }, drag: function(event, ui, inst){ var ts, bs, ls, rs, l, r, t, b, i, first, o=inst.options, d=o.snapTolerance, x1=ui.offset.left, x2=x1 + inst.helperProportions.width, y1=ui.offset.top, y2=y1 + inst.helperProportions.height; for(i=inst.snapElements.length - 1; i >=0; i--){ l=inst.snapElements[ i ].left - inst.margins.left; r=l + inst.snapElements[ i ].width; t=inst.snapElements[ i ].top - inst.margins.top; b=t + inst.snapElements[ i ].height; if(x2 < l - d||x1 > r + d||y2 < t - d||y1 > b + d || !$.contains(inst.snapElements[ i ].item.ownerDocument, inst.snapElements[ i ].item)){ if(inst.snapElements[ i ].snapping){ (inst.options.snap.release && inst.options.snap.release.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[ i ].item }) )); } inst.snapElements[ i ].snapping=false; continue; } if(o.snapMode!=="inner"){ ts=Math.abs(t - y2) <=d; bs=Math.abs(b - y1) <=d; ls=Math.abs(l - x2) <=d; rs=Math.abs(r - x1) <=d; if(ts){ ui.position.top=inst._convertPositionTo("relative", { top: t - inst.helperProportions.height, left: 0 }).top; } if(bs){ ui.position.top=inst._convertPositionTo("relative", { top: b, left: 0 }).top; } if(ls){ ui.position.left=inst._convertPositionTo("relative", { top: 0, left: l - inst.helperProportions.width }).left; } if(rs){ ui.position.left=inst._convertPositionTo("relative", { top: 0, left: r }).left; }} first=(ts||bs||ls||rs); if(o.snapMode!=="outer"){ ts=Math.abs(t - y1) <=d; bs=Math.abs(b - y2) <=d; ls=Math.abs(l - x1) <=d; rs=Math.abs(r - x2) <=d; if(ts){ ui.position.top=inst._convertPositionTo("relative", { top: t, left: 0 }).top; } if(bs){ ui.position.top=inst._convertPositionTo("relative", { top: b - inst.helperProportions.height, left: 0 }).top; } if(ls){ ui.position.left=inst._convertPositionTo("relative", { top: 0, left: l }).left; } if(rs){ ui.position.left=inst._convertPositionTo("relative", { top: 0, left: r - inst.helperProportions.width }).left; }} if(!inst.snapElements[ i ].snapping&&(ts||bs||ls||rs||first)){ (inst.options.snap.snap && inst.options.snap.snap.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[ i ].item }))); } inst.snapElements[ i ].snapping=(ts||bs||ls||rs||first); }} }); $.ui.plugin.add("draggable", "stack", { start: function(event, ui, instance){ var min, o=instance.options, group=$.makeArray($(o.stack)).sort(function(a, b){ return(parseInt($(a).css("zIndex"), 10)||0) - (parseInt($(b).css("zIndex"), 10)||0); }); if(!group.length){ return; } min=parseInt($(group[ 0 ]).css("zIndex"), 10)||0; $(group).each(function(i){ $(this).css("zIndex", min + i); }); this.css("zIndex",(min + group.length)); }}); $.ui.plugin.add("draggable", "zIndex", { start: function(event, ui, instance){ var t=$(ui.helper), o=instance.options; if(t.css("zIndex")){ o._zIndex=t.css("zIndex"); } t.css("zIndex", o.zIndex); }, stop: function(event, ui, instance){ var o=instance.options; if(o._zIndex){ $(ui.helper).css("zIndex", o._zIndex); }} }); var widgetsDraggable=$.ui.draggable; $.widget("ui.droppable", { version: "1.12.1", widgetEventPrefix: "drop", options: { accept: "*", addClasses: true, greedy: false, scope: "default", tolerance: "intersect", activate: null, deactivate: null, drop: null, out: null, over: null }, _create: function(){ var proportions, o=this.options, accept=o.accept; this.isover=false; this.isout=true; this.accept=$.isFunction(accept) ? accept:function(d){ return d.is(accept); }; this.proportions=function(){ if(arguments.length){ proportions=arguments[ 0 ]; }else{ return proportions ? proportions : proportions={ width: this.element[ 0 ].offsetWidth, height: this.element[ 0 ].offsetHeight };}}; this._addToManager(o.scope); o.addClasses&&this._addClass("ui-droppable"); }, _addToManager: function(scope){ $.ui.ddmanager.droppables[ scope ]=$.ui.ddmanager.droppables[ scope ]||[]; $.ui.ddmanager.droppables[ scope ].push(this); }, _splice: function(drop){ var i=0; for(; i < drop.length; i++){ if(drop[ i ]===this){ drop.splice(i, 1); }} }, _destroy: function(){ var drop=$.ui.ddmanager.droppables[ this.options.scope ]; this._splice(drop); }, _setOption: function(key, value){ if(key==="accept"){ this.accept=$.isFunction(value) ? value:function(d){ return d.is(value); };}else if(key==="scope"){ var drop=$.ui.ddmanager.droppables[ this.options.scope ]; this._splice(drop); this._addToManager(value); } this._super(key, value); }, _activate: function(event){ var draggable=$.ui.ddmanager.current; this._addActiveClass(); if(draggable){ this._trigger("activate", event, this.ui(draggable)); }}, _deactivate: function(event){ var draggable=$.ui.ddmanager.current; this._removeActiveClass(); if(draggable){ this._trigger("deactivate", event, this.ui(draggable)); }}, _over: function(event){ var draggable=$.ui.ddmanager.current; if(!draggable||(draggable.currentItem || draggable.element)[ 0 ]===this.element[ 0 ]){ return; } if(this.accept.call(this.element[ 0 ],(draggable.currentItem || draggable.element))){ this._addHoverClass(); this._trigger("over", event, this.ui(draggable)); }}, _out: function(event){ var draggable=$.ui.ddmanager.current; if(!draggable||(draggable.currentItem || draggable.element)[ 0 ]===this.element[ 0 ]){ return; } if(this.accept.call(this.element[ 0 ],(draggable.currentItem || draggable.element))){ this._removeHoverClass(); this._trigger("out", event, this.ui(draggable)); }}, _drop: function(event, custom){ var draggable=custom||$.ui.ddmanager.current, childrenIntersection=false; if(!draggable||(draggable.currentItem || draggable.element)[ 0 ]===this.element[ 0 ]){ return false; } this.element .find(":data(ui-droppable)") .not(".ui-draggable-dragging") .each(function(){ var inst=$(this).droppable("instance"); if(inst.options.greedy && !inst.options.disabled && inst.options.scope===draggable.options.scope && inst.accept.call(inst.element[ 0 ],(draggable.currentItem||draggable.element) ) && intersect( draggable, $.extend(inst, { offset: inst.element.offset() }), inst.options.tolerance, event ) ){ childrenIntersection=true; return false; }}); if(childrenIntersection){ return false; } if(this.accept.call(this.element[ 0 ], (draggable.currentItem||draggable.element))){ this._removeActiveClass(); this._removeHoverClass(); this._trigger("drop", event, this.ui(draggable)); return this.element; } return false; }, ui: function(c){ return { draggable:(c.currentItem||c.element), helper: c.helper, position: c.position, offset: c.positionAbs };}, _addHoverClass: function(){ this._addClass("ui-droppable-hover"); }, _removeHoverClass: function(){ this._removeClass("ui-droppable-hover"); }, _addActiveClass: function(){ this._addClass("ui-droppable-active"); }, _removeActiveClass: function(){ this._removeClass("ui-droppable-active"); }}); var intersect=$.ui.intersect=(function(){ function isOverAxis(x, reference, size){ return(x >=reference)&&(x <(reference + size)); } return function(draggable, droppable, toleranceMode, event){ if(!droppable.offset){ return false; } var x1=(draggable.positionAbs || draggable.position.absolute).left + draggable.margins.left, y1=(draggable.positionAbs || draggable.position.absolute).top + draggable.margins.top, x2=x1 + draggable.helperProportions.width, y2=y1 + draggable.helperProportions.height, l=droppable.offset.left, t=droppable.offset.top, r=l + droppable.proportions().width, b=t + droppable.proportions().height; switch(toleranceMode){ case "fit": return(l <=x1&&x2 <=r&&t <=y1&&y2 <=b); case "intersect": return(l < x1 +(draggable.helperProportions.width / 2) && x2 -(draggable.helperProportions.width / 2) < r && t < y1 +(draggable.helperProportions.height / 2) && y2 -(draggable.helperProportions.height / 2) < b); case "pointer": return isOverAxis(event.pageY, t, droppable.proportions().height) && isOverAxis(event.pageX, l, droppable.proportions().width); case "touch": return ( (y1 >=t&&y1 <=b) || (y2 >=t&&y2 <=b) || (y1 < t&&y2 > b) )&&( (x1 >=l&&x1 <=r) || (x2 >=l&&x2 <=r) || (x1 < l&&x2 > r) ); default: return false; }};})(); $.ui.ddmanager={ current: null, droppables: { "default": [] }, prepareOffsets: function(t, event){ var i, j, m=$.ui.ddmanager.droppables[ t.options.scope ]||[], type=event ? event.type:null, list=(t.currentItem||t.element).find(":data(ui-droppable)").addBack(); droppablesLoop: for(i=0; i < m.length; i++){ if(m[ i ].options.disabled||(t&&!m[ i ].accept.call(m[ i ].element[ 0 ], (t.currentItem||t.element)))){ continue; } for(j=0; j < list.length; j++){ if(list[ j ]===m[ i ].element[ 0 ]){ m[ i ].proportions().height=0; continue droppablesLoop; }} m[ i ].visible=m[ i ].element.css("display")!=="none"; if(!m[ i ].visible){ continue; } if(type==="mousedown"){ m[ i ]._activate.call(m[ i ], event); } m[ i ].offset=m[ i ].element.offset(); m[ i ].proportions({ width: m[ i ].element[ 0 ].offsetWidth, height: m[ i ].element[ 0 ].offsetHeight }); }}, drop: function(draggable, event){ var dropped=false; $.each(( $.ui.ddmanager.droppables[ draggable.options.scope ]||[]).slice(), function(){ if(!this.options){ return; } if(!this.options.disabled&&this.visible && intersect(draggable, this, this.options.tolerance, event)){ dropped=this._drop.call(this, event)||dropped; } if(!this.options.disabled&&this.visible&&this.accept.call(this.element[ 0 ], (draggable.currentItem||draggable.element))){ this.isout=true; this.isover=false; this._deactivate.call(this, event); }}); return dropped; }, dragStart: function(draggable, event){ draggable.element.parentsUntil("body").on("scroll.droppable", function(){ if(!draggable.options.refreshPositions){ $.ui.ddmanager.prepareOffsets(draggable, event); }}); }, drag: function(draggable, event){ if(draggable.options.refreshPositions){ $.ui.ddmanager.prepareOffsets(draggable, event); } $.each($.ui.ddmanager.droppables[ draggable.options.scope ]||[], function(){ if(this.options.disabled||this.greedyChild||!this.visible){ return; } var parentInstance, scope, parent, intersects=intersect(draggable, this, this.options.tolerance, event), c = !intersects&&this.isover ? "isout" : (intersects&&!this.isover ? "isover":null); if(!c){ return; } if(this.options.greedy){ scope=this.options.scope; parent=this.element.parents(":data(ui-droppable)").filter(function(){ return $(this).droppable("instance").options.scope===scope; }); if(parent.length){ parentInstance=$(parent[ 0 ]).droppable("instance"); parentInstance.greedyChild=(c==="isover"); }} if(parentInstance&&c==="isover"){ parentInstance.isover=false; parentInstance.isout=true; parentInstance._out.call(parentInstance, event); } this[ c ]=true; this[ c==="isout" ? "isover":"isout" ]=false; this[ c==="isover" ? "_over":"_out" ].call(this, event); if(parentInstance&&c==="isout"){ parentInstance.isout=false; parentInstance.isover=true; parentInstance._over.call(parentInstance, event); }}); }, dragStop: function(draggable, event){ draggable.element.parentsUntil("body").off("scroll.droppable"); if(!draggable.options.refreshPositions){ $.ui.ddmanager.prepareOffsets(draggable, event); }} }; if($.uiBackCompat!==false){ $.widget("ui.droppable", $.ui.droppable, { options: { hoverClass: false, activeClass: false }, _addActiveClass: function(){ this._super(); if(this.options.activeClass){ this.element.addClass(this.options.activeClass); }}, _removeActiveClass: function(){ this._super(); if(this.options.activeClass){ this.element.removeClass(this.options.activeClass); }}, _addHoverClass: function(){ this._super(); if(this.options.hoverClass){ this.element.addClass(this.options.hoverClass); }}, _removeHoverClass: function(){ this._super(); if(this.options.hoverClass){ this.element.removeClass(this.options.hoverClass); }} }); } var widgetsDroppable=$.ui.droppable; $.widget("ui.resizable", $.ui.mouse, { version: "1.12.1", widgetEventPrefix: "resize", options: { alsoResize: false, animate: false, animateDuration: "slow", animateEasing: "swing", aspectRatio: false, autoHide: false, classes: { "ui-resizable-se": "ui-icon ui-icon-gripsmall-diagonal-se" }, containment: false, ghost: false, grid: false, handles: "e,s,se", helper: false, maxHeight: null, maxWidth: null, minHeight: 10, minWidth: 10, zIndex: 90, resize: null, start: null, stop: null }, _num: function(value){ return parseFloat(value)||0; }, _isNumber: function(value){ return !isNaN(parseFloat(value)); }, _hasScroll: function(el, a){ if($(el).css("overflow")==="hidden"){ return false; } var scroll=(a&&a==="left") ? "scrollLeft":"scrollTop", has=false; if(el[ scroll ] > 0){ return true; } el[ scroll ]=1; has=(el[ scroll ] > 0); el[ scroll ]=0; return has; }, _create: function(){ var margins, o=this.options, that=this; this._addClass("ui-resizable"); $.extend(this, { _aspectRatio: !!(o.aspectRatio), aspectRatio: o.aspectRatio, originalElement: this.element, _proportionallyResizeElements: [], _helper: o.helper||o.ghost||o.animate ? o.helper||"ui-resizable-helper":null }); if(this.element[ 0 ].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)){ this.element.wrap($("
      ").css({ position: this.element.css("position"), width: this.element.outerWidth(), height: this.element.outerHeight(), top: this.element.css("top"), left: this.element.css("left") }) ); this.element=this.element.parent().data("ui-resizable", this.element.resizable("instance") ); this.elementIsWrapper=true; margins={ marginTop: this.originalElement.css("marginTop"), marginRight: this.originalElement.css("marginRight"), marginBottom: this.originalElement.css("marginBottom"), marginLeft: this.originalElement.css("marginLeft") }; this.element.css(margins); this.originalElement.css("margin", 0); this.originalResizeStyle=this.originalElement.css("resize"); this.originalElement.css("resize", "none"); this._proportionallyResizeElements.push(this.originalElement.css({ position: "static", zoom: 1, display: "block" })); this.originalElement.css(margins); this._proportionallyResize(); } this._setupHandles(); if(o.autoHide){ $(this.element) .on("mouseenter", function(){ if(o.disabled){ return; } that._removeClass("ui-resizable-autohide"); that._handles.show(); }) .on("mouseleave", function(){ if(o.disabled){ return; } if(!that.resizing){ that._addClass("ui-resizable-autohide"); that._handles.hide(); }}); } this._mouseInit(); }, _destroy: function(){ this._mouseDestroy(); var wrapper, _destroy=function(exp){ $(exp) .removeData("resizable") .removeData("ui-resizable") .off(".resizable") .find(".ui-resizable-handle") .remove(); }; if(this.elementIsWrapper){ _destroy(this.element); wrapper=this.element; this.originalElement.css({ position: wrapper.css("position"), width: wrapper.outerWidth(), height: wrapper.outerHeight(), top: wrapper.css("top"), left: wrapper.css("left") }).insertAfter(wrapper); wrapper.remove(); } this.originalElement.css("resize", this.originalResizeStyle); _destroy(this.originalElement); return this; }, _setOption: function(key, value){ this._super(key, value); switch(key){ case "handles": this._removeHandles(); this._setupHandles(); break; default: break; }}, _setupHandles: function(){ var o=this.options, handle, i, n, hname, axis, that=this; this.handles=o.handles || (!$(".ui-resizable-handle", this.element).length ? "e,s,se":{ n: ".ui-resizable-n", e: ".ui-resizable-e", s: ".ui-resizable-s", w: ".ui-resizable-w", se: ".ui-resizable-se", sw: ".ui-resizable-sw", ne: ".ui-resizable-ne", nw: ".ui-resizable-nw" }); this._handles=$(); if(this.handles.constructor===String){ if(this.handles==="all"){ this.handles="n,e,s,w,se,sw,ne,nw"; } n=this.handles.split(","); this.handles={}; for(i=0; i < n.length; i++){ handle=$.trim(n[ i ]); hname="ui-resizable-" + handle; axis=$("
      "); this._addClass(axis, "ui-resizable-handle " + hname); axis.css({ zIndex: o.zIndex }); this.handles[ handle ]=".ui-resizable-" + handle; this.element.append(axis); }} this._renderAxis=function(target){ var i, axis, padPos, padWrapper; target=target||this.element; for(i in this.handles){ if(this.handles[ i ].constructor===String){ this.handles[ i ]=this.element.children(this.handles[ i ]).first().show(); }else if(this.handles[ i ].jquery||this.handles[ i ].nodeType){ this.handles[ i ]=$(this.handles[ i ]); this._on(this.handles[ i ], { "mousedown": that._mouseDown }); } if(this.elementIsWrapper && this.originalElement[ 0 ] .nodeName .match(/^(textarea|input|select|button)$/i)){ axis=$(this.handles[ i ], this.element); padWrapper=/sw|ne|nw|se|n|s/.test(i) ? axis.outerHeight() : axis.outerWidth(); padPos=[ "padding", /ne|nw|n/.test(i) ? "Top" : /se|sw|s/.test(i) ? "Bottom" : /^e$/.test(i) ? "Right":"Left" ].join(""); target.css(padPos, padWrapper); this._proportionallyResize(); } this._handles=this._handles.add(this.handles[ i ]); }}; this._renderAxis(this.element); this._handles=this._handles.add(this.element.find(".ui-resizable-handle")); this._handles.disableSelection(); this._handles.on("mouseover", function(){ if(!that.resizing){ if(this.className){ axis=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i); } that.axis=axis&&axis[ 1 ] ? axis[ 1 ]:"se"; }}); if(o.autoHide){ this._handles.hide(); this._addClass("ui-resizable-autohide"); }}, _removeHandles: function(){ this._handles.remove(); }, _mouseCapture: function(event){ var i, handle, capture=false; for(i in this.handles){ handle=$(this.handles[ i ])[ 0 ]; if(handle===event.target||$.contains(handle, event.target)){ capture=true; }} return !this.options.disabled&&capture; }, _mouseStart: function(event){ var curleft, curtop, cursor, o=this.options, el=this.element; this.resizing=true; this._renderProxy(); curleft=this._num(this.helper.css("left")); curtop=this._num(this.helper.css("top")); if(o.containment){ curleft +=$(o.containment).scrollLeft()||0; curtop +=$(o.containment).scrollTop()||0; } this.offset=this.helper.offset(); this.position={ left: curleft, top: curtop }; this.size=this._helper ? { width: this.helper.width(), height: this.helper.height() }:{ width: el.width(), height: el.height() }; this.originalSize=this._helper ? { width: el.outerWidth(), height: el.outerHeight() }:{ width: el.width(), height: el.height() }; this.sizeDiff={ width: el.outerWidth() - el.width(), height: el.outerHeight() - el.height() }; this.originalPosition={ left: curleft, top: curtop }; this.originalMousePosition={ left: event.pageX, top: event.pageY }; this.aspectRatio=(typeof o.aspectRatio==="number") ? o.aspectRatio : (( this.originalSize.width / this.originalSize.height)||1); cursor=$(".ui-resizable-" + this.axis).css("cursor"); $("body").css("cursor", cursor==="auto" ? this.axis + "-resize":cursor); this._addClass("ui-resizable-resizing"); this._propagate("start", event); return true; }, _mouseDrag: function(event){ var data, props, smp=this.originalMousePosition, a=this.axis, dx=(event.pageX - smp.left)||0, dy=(event.pageY - smp.top)||0, trigger=this._change[ a ]; this._updatePrevProperties(); if(!trigger){ return false; } data=trigger.apply(this, [ event, dx, dy ]); this._updateVirtualBoundaries(event.shiftKey); if(this._aspectRatio||event.shiftKey){ data=this._updateRatio(data, event); } data=this._respectSize(data, event); this._updateCache(data); this._propagate("resize", event); props=this._applyChanges(); if(!this._helper&&this._proportionallyResizeElements.length){ this._proportionallyResize(); } if(!$.isEmptyObject(props)){ this._updatePrevProperties(); this._trigger("resize", event, this.ui()); this._applyChanges(); } return false; }, _mouseStop: function(event){ this.resizing=false; var pr, ista, soffseth, soffsetw, s, left, top, o=this.options, that=this; if(this._helper){ pr=this._proportionallyResizeElements; ista=pr.length&&(/textarea/i).test(pr[ 0 ].nodeName); soffseth=ista&&this._hasScroll(pr[ 0 ], "left") ? 0:that.sizeDiff.height; soffsetw=ista ? 0:that.sizeDiff.width; s={ width:(that.helper.width() - soffsetw), height:(that.helper.height() - soffseth) }; left=(parseFloat(that.element.css("left")) + (that.position.left - that.originalPosition.left))||null; top=(parseFloat(that.element.css("top")) + (that.position.top - that.originalPosition.top))||null; if(!o.animate){ this.element.css($.extend(s, { top: top, left: left })); } that.helper.height(that.size.height); that.helper.width(that.size.width); if(this._helper&&!o.animate){ this._proportionallyResize(); }} $("body").css("cursor", "auto"); this._removeClass("ui-resizable-resizing"); this._propagate("stop", event); if(this._helper){ this.helper.remove(); } return false; }, _updatePrevProperties: function(){ this.prevPosition={ top: this.position.top, left: this.position.left }; this.prevSize={ width: this.size.width, height: this.size.height };}, _applyChanges: function(){ var props={}; if(this.position.top!==this.prevPosition.top){ props.top=this.position.top + "px"; } if(this.position.left!==this.prevPosition.left){ props.left=this.position.left + "px"; } if(this.size.width!==this.prevSize.width){ props.width=this.size.width + "px"; } if(this.size.height!==this.prevSize.height){ props.height=this.size.height + "px"; } this.helper.css(props); return props; }, _updateVirtualBoundaries: function(forceAspectRatio){ var pMinWidth, pMaxWidth, pMinHeight, pMaxHeight, b, o=this.options; b={ minWidth: this._isNumber(o.minWidth) ? o.minWidth:0, maxWidth: this._isNumber(o.maxWidth) ? o.maxWidth:Infinity, minHeight: this._isNumber(o.minHeight) ? o.minHeight:0, maxHeight: this._isNumber(o.maxHeight) ? o.maxHeight:Infinity }; if(this._aspectRatio||forceAspectRatio){ pMinWidth=b.minHeight * this.aspectRatio; pMinHeight=b.minWidth / this.aspectRatio; pMaxWidth=b.maxHeight * this.aspectRatio; pMaxHeight=b.maxWidth / this.aspectRatio; if(pMinWidth > b.minWidth){ b.minWidth=pMinWidth; } if(pMinHeight > b.minHeight){ b.minHeight=pMinHeight; } if(pMaxWidth < b.maxWidth){ b.maxWidth=pMaxWidth; } if(pMaxHeight < b.maxHeight){ b.maxHeight=pMaxHeight; }} this._vBoundaries=b; }, _updateCache: function(data){ this.offset=this.helper.offset(); if(this._isNumber(data.left)){ this.position.left=data.left; } if(this._isNumber(data.top)){ this.position.top=data.top; } if(this._isNumber(data.height)){ this.size.height=data.height; } if(this._isNumber(data.width)){ this.size.width=data.width; }}, _updateRatio: function(data){ var cpos=this.position, csize=this.size, a=this.axis; if(this._isNumber(data.height)){ data.width=(data.height * this.aspectRatio); }else if(this._isNumber(data.width)){ data.height=(data.width / this.aspectRatio); } if(a==="sw"){ data.left=cpos.left +(csize.width - data.width); data.top=null; } if(a==="nw"){ data.top=cpos.top +(csize.height - data.height); data.left=cpos.left +(csize.width - data.width); } return data; }, _respectSize: function(data){ var o=this._vBoundaries, a=this.axis, ismaxw=this._isNumber(data.width)&&o.maxWidth&&(o.maxWidth < data.width), ismaxh=this._isNumber(data.height)&&o.maxHeight&&(o.maxHeight < data.height), isminw=this._isNumber(data.width)&&o.minWidth&&(o.minWidth > data.width), isminh=this._isNumber(data.height)&&o.minHeight&&(o.minHeight > data.height), dw=this.originalPosition.left + this.originalSize.width, dh=this.originalPosition.top + this.originalSize.height, cw=/sw|nw|w/.test(a), ch=/nw|ne|n/.test(a); if(isminw){ data.width=o.minWidth; } if(isminh){ data.height=o.minHeight; } if(ismaxw){ data.width=o.maxWidth; } if(ismaxh){ data.height=o.maxHeight; } if(isminw&&cw){ data.left=dw - o.minWidth; } if(ismaxw&&cw){ data.left=dw - o.maxWidth; } if(isminh&&ch){ data.top=dh - o.minHeight; } if(ismaxh&&ch){ data.top=dh - o.maxHeight; } if(!data.width&&!data.height&&!data.left&&data.top){ data.top=null; }else if(!data.width&&!data.height&&!data.top&&data.left){ data.left=null; } return data; }, _getPaddingPlusBorderDimensions: function(element){ var i=0, widths=[], borders=[ element.css("borderTopWidth"), element.css("borderRightWidth"), element.css("borderBottomWidth"), element.css("borderLeftWidth") ], paddings=[ element.css("paddingTop"), element.css("paddingRight"), element.css("paddingBottom"), element.css("paddingLeft") ]; for(; i < 4; i++){ widths[ i ]=(parseFloat(borders[ i ])||0); widths[ i ] +=(parseFloat(paddings[ i ])||0); } return { height: widths[ 0 ] + widths[ 2 ], width: widths[ 1 ] + widths[ 3 ] };}, _proportionallyResize: function(){ if(!this._proportionallyResizeElements.length){ return; } var prel, i=0, element=this.helper||this.element; for(; i < this._proportionallyResizeElements.length; i++){ prel=this._proportionallyResizeElements[ i ]; if(!this.outerDimensions){ this.outerDimensions=this._getPaddingPlusBorderDimensions(prel); } prel.css({ height:(element.height() - this.outerDimensions.height)||0, width:(element.width() - this.outerDimensions.width)||0 }); }}, _renderProxy: function(){ var el=this.element, o=this.options; this.elementOffset=el.offset(); if(this._helper){ this.helper=this.helper||$("
      "); this._addClass(this.helper, this._helper); this.helper.css({ width: this.element.outerWidth(), height: this.element.outerHeight(), position: "absolute", left: this.elementOffset.left + "px", top: this.elementOffset.top + "px", zIndex: ++o.zIndex }); this.helper .appendTo("body") .disableSelection(); }else{ this.helper=this.element; }}, _change: { e: function(event, dx){ return { width: this.originalSize.width + dx };}, w: function(event, dx){ var cs=this.originalSize, sp=this.originalPosition; return { left: sp.left + dx, width: cs.width - dx };}, n: function(event, dx, dy){ var cs=this.originalSize, sp=this.originalPosition; return { top: sp.top + dy, height: cs.height - dy };}, s: function(event, dx, dy){ return { height: this.originalSize.height + dy };}, se: function(event, dx, dy){ return $.extend(this._change.s.apply(this, arguments), this._change.e.apply(this, [ event, dx, dy ])); }, sw: function(event, dx, dy){ return $.extend(this._change.s.apply(this, arguments), this._change.w.apply(this, [ event, dx, dy ])); }, ne: function(event, dx, dy){ return $.extend(this._change.n.apply(this, arguments), this._change.e.apply(this, [ event, dx, dy ])); }, nw: function(event, dx, dy){ return $.extend(this._change.n.apply(this, arguments), this._change.w.apply(this, [ event, dx, dy ])); }}, _propagate: function(n, event){ $.ui.plugin.call(this, n, [ event, this.ui() ]); (n!=="resize"&&this._trigger(n, event, this.ui())); }, plugins: {}, ui: function(){ return { originalElement: this.originalElement, element: this.element, helper: this.helper, position: this.position, size: this.size, originalSize: this.originalSize, originalPosition: this.originalPosition };}}); $.ui.plugin.add("resizable", "animate", { stop: function(event){ var that=$(this).resizable("instance"), o=that.options, pr=that._proportionallyResizeElements, ista=pr.length&&(/textarea/i).test(pr[ 0 ].nodeName), soffseth=ista&&that._hasScroll(pr[ 0 ], "left") ? 0:that.sizeDiff.height, soffsetw=ista ? 0:that.sizeDiff.width, style={ width:(that.size.width - soffsetw), height:(that.size.height - soffseth) }, left=(parseFloat(that.element.css("left")) + (that.position.left - that.originalPosition.left))||null, top=(parseFloat(that.element.css("top")) + (that.position.top - that.originalPosition.top))||null; that.element.animate($.extend(style, top&&left ? { top: top, left: left }:{}), { duration: o.animateDuration, easing: o.animateEasing, step: function(){ var data={ width: parseFloat(that.element.css("width")), height: parseFloat(that.element.css("height")), top: parseFloat(that.element.css("top")), left: parseFloat(that.element.css("left")) }; if(pr&&pr.length){ $(pr[ 0 ]).css({ width: data.width, height: data.height }); } that._updateCache(data); that._propagate("resize", event); }} ); }}); $.ui.plugin.add("resizable", "containment", { start: function(){ var element, p, co, ch, cw, width, height, that=$(this).resizable("instance"), o=that.options, el=that.element, oc=o.containment, ce=(oc instanceof $) ? oc.get(0) : (/parent/.test(oc)) ? el.parent().get(0):oc; if(!ce){ return; } that.containerElement=$(ce); if(/document/.test(oc)||oc===document){ that.containerOffset={ left: 0, top: 0 }; that.containerPosition={ left: 0, top: 0 }; that.parentData={ element: $(document), left: 0, top: 0, width: $(document).width(), height: $(document).height()||document.body.parentNode.scrollHeight };}else{ element=$(ce); p=[]; $([ "Top", "Right", "Left", "Bottom" ]).each(function(i, name){ p[ i ]=that._num(element.css("padding" + name)); }); that.containerOffset=element.offset(); that.containerPosition=element.position(); that.containerSize={ height:(element.innerHeight() - p[ 3 ]), width:(element.innerWidth() - p[ 1 ]) }; co=that.containerOffset; ch=that.containerSize.height; cw=that.containerSize.width; width=(that._hasScroll(ce, "left") ? ce.scrollWidth:cw); height=(that._hasScroll(ce) ? ce.scrollHeight:ch) ; that.parentData={ element: ce, left: co.left, top: co.top, width: width, height: height };}}, resize: function(event){ var woset, hoset, isParent, isOffsetRelative, that=$(this).resizable("instance"), o=that.options, co=that.containerOffset, cp=that.position, pRatio=that._aspectRatio||event.shiftKey, cop={ top: 0, left: 0 }, ce=that.containerElement, continueResize=true; if(ce[ 0 ]!==document&&(/static/).test(ce.css("position"))){ cop=co; } if(cp.left <(that._helper ? co.left:0)){ that.size.width=that.size.width + (that._helper ? (that.position.left - co.left) : (that.position.left - cop.left)); if(pRatio){ that.size.height=that.size.width / that.aspectRatio; continueResize=false; } that.position.left=o.helper ? co.left:0; } if(cp.top <(that._helper ? co.top:0)){ that.size.height=that.size.height + (that._helper ? (that.position.top - co.top) : that.position.top); if(pRatio){ that.size.width=that.size.height * that.aspectRatio; continueResize=false; } that.position.top=that._helper ? co.top:0; } isParent=that.containerElement.get(0)===that.element.parent().get(0); isOffsetRelative=/relative|absolute/.test(that.containerElement.css("position")); if(isParent&&isOffsetRelative){ that.offset.left=that.parentData.left + that.position.left; that.offset.top=that.parentData.top + that.position.top; }else{ that.offset.left=that.element.offset().left; that.offset.top=that.element.offset().top; } woset=Math.abs(that.sizeDiff.width + (that._helper ? that.offset.left - cop.left : (that.offset.left - co.left))); hoset=Math.abs(that.sizeDiff.height + (that._helper ? that.offset.top - cop.top : (that.offset.top - co.top))); if(woset + that.size.width >=that.parentData.width){ that.size.width=that.parentData.width - woset; if(pRatio){ that.size.height=that.size.width / that.aspectRatio; continueResize=false; }} if(hoset + that.size.height >=that.parentData.height){ that.size.height=that.parentData.height - hoset; if(pRatio){ that.size.width=that.size.height * that.aspectRatio; continueResize=false; }} if(!continueResize){ that.position.left=that.prevPosition.left; that.position.top=that.prevPosition.top; that.size.width=that.prevSize.width; that.size.height=that.prevSize.height; }}, stop: function(){ var that=$(this).resizable("instance"), o=that.options, co=that.containerOffset, cop=that.containerPosition, ce=that.containerElement, helper=$(that.helper), ho=helper.offset(), w=helper.outerWidth() - that.sizeDiff.width, h=helper.outerHeight() - that.sizeDiff.height; if(that._helper&&!o.animate&&(/relative/).test(ce.css("position"))){ $(this).css({ left: ho.left - cop.left - co.left, width: w, height: h }); } if(that._helper&&!o.animate&&(/static/).test(ce.css("position"))){ $(this).css({ left: ho.left - cop.left - co.left, width: w, height: h }); }} }); $.ui.plugin.add("resizable", "alsoResize", { start: function(){ var that=$(this).resizable("instance"), o=that.options; $(o.alsoResize).each(function(){ var el=$(this); el.data("ui-resizable-alsoresize", { width: parseFloat(el.width()), height: parseFloat(el.height()), left: parseFloat(el.css("left")), top: parseFloat(el.css("top")) }); }); }, resize: function(event, ui){ var that=$(this).resizable("instance"), o=that.options, os=that.originalSize, op=that.originalPosition, delta={ height:(that.size.height - os.height)||0, width:(that.size.width - os.width)||0, top:(that.position.top - op.top)||0, left:(that.position.left - op.left)||0 }; $(o.alsoResize).each(function(){ var el=$(this), start=$(this).data("ui-resizable-alsoresize"), style={}, css=el.parents(ui.originalElement[ 0 ]).length ? [ "width", "height" ] : [ "width", "height", "top", "left" ]; $.each(css, function(i, prop){ var sum=(start[ prop ]||0) +(delta[ prop ]||0); if(sum&&sum >=0){ style[ prop ]=sum||null; }}); el.css(style); }); }, stop: function(){ $(this).removeData("ui-resizable-alsoresize"); }}); $.ui.plugin.add("resizable", "ghost", { start: function(){ var that=$(this).resizable("instance"), cs=that.size; that.ghost=that.originalElement.clone(); that.ghost.css({ opacity: 0.25, display: "block", position: "relative", height: cs.height, width: cs.width, margin: 0, left: 0, top: 0 }); that._addClass(that.ghost, "ui-resizable-ghost"); if($.uiBackCompat!==false&&typeof that.options.ghost==="string"){ that.ghost.addClass(this.options.ghost); } that.ghost.appendTo(that.helper); }, resize: function(){ var that=$(this).resizable("instance"); if(that.ghost){ that.ghost.css({ position: "relative", height: that.size.height, width: that.size.width }); }}, stop: function(){ var that=$(this).resizable("instance"); if(that.ghost&&that.helper){ that.helper.get(0).removeChild(that.ghost.get(0)); }} }); $.ui.plugin.add("resizable", "grid", { resize: function(){ var outerDimensions, that=$(this).resizable("instance"), o=that.options, cs=that.size, os=that.originalSize, op=that.originalPosition, a=that.axis, grid=typeof o.grid==="number" ? [ o.grid, o.grid ]:o.grid, gridX=(grid[ 0 ]||1), gridY=(grid[ 1 ]||1), ox=Math.round(( cs.width - os.width) / gridX) * gridX, oy=Math.round(( cs.height - os.height) / gridY) * gridY, newWidth=os.width + ox, newHeight=os.height + oy, isMaxWidth=o.maxWidth&&(o.maxWidth < newWidth), isMaxHeight=o.maxHeight&&(o.maxHeight < newHeight), isMinWidth=o.minWidth&&(o.minWidth > newWidth), isMinHeight=o.minHeight&&(o.minHeight > newHeight); o.grid=grid; if(isMinWidth){ newWidth +=gridX; } if(isMinHeight){ newHeight +=gridY; } if(isMaxWidth){ newWidth -=gridX; } if(isMaxHeight){ newHeight -=gridY; } if(/^(se|s|e)$/.test(a)){ that.size.width=newWidth; that.size.height=newHeight; }else if(/^(ne)$/.test(a)){ that.size.width=newWidth; that.size.height=newHeight; that.position.top=op.top - oy; }else if(/^(sw)$/.test(a)){ that.size.width=newWidth; that.size.height=newHeight; that.position.left=op.left - ox; }else{ if(newHeight - gridY <=0||newWidth - gridX <=0){ outerDimensions=that._getPaddingPlusBorderDimensions(this); } if(newHeight - gridY > 0){ that.size.height=newHeight; that.position.top=op.top - oy; }else{ newHeight=gridY - outerDimensions.height; that.size.height=newHeight; that.position.top=op.top + os.height - newHeight; } if(newWidth - gridX > 0){ that.size.width=newWidth; that.position.left=op.left - ox; }else{ newWidth=gridX - outerDimensions.width; that.size.width=newWidth; that.position.left=op.left + os.width - newWidth; }} }}); var widgetsResizable=$.ui.resizable; var widgetsSelectable=$.widget("ui.selectable", $.ui.mouse, { version: "1.12.1", options: { appendTo: "body", autoRefresh: true, distance: 0, filter: "*", tolerance: "touch", selected: null, selecting: null, start: null, stop: null, unselected: null, unselecting: null }, _create: function(){ var that=this; this._addClass("ui-selectable"); this.dragged=false; this.refresh=function(){ that.elementPos=$(that.element[ 0 ]).offset(); that.selectees=$(that.options.filter, that.element[ 0 ]); that._addClass(that.selectees, "ui-selectee"); that.selectees.each(function(){ var $this=$(this), selecteeOffset=$this.offset(), pos={ left: selecteeOffset.left - that.elementPos.left, top: selecteeOffset.top - that.elementPos.top }; $.data(this, "selectable-item", { element: this, $element: $this, left: pos.left, top: pos.top, right: pos.left + $this.outerWidth(), bottom: pos.top + $this.outerHeight(), startselected: false, selected: $this.hasClass("ui-selected"), selecting: $this.hasClass("ui-selecting"), unselecting: $this.hasClass("ui-unselecting") }); }); }; this.refresh(); this._mouseInit(); this.helper=$("
      "); this._addClass(this.helper, "ui-selectable-helper"); }, _destroy: function(){ this.selectees.removeData("selectable-item"); this._mouseDestroy(); }, _mouseStart: function(event){ var that=this, options=this.options; this.opos=[ event.pageX, event.pageY ]; this.elementPos=$(this.element[ 0 ]).offset(); if(this.options.disabled){ return; } this.selectees=$(options.filter, this.element[ 0 ]); this._trigger("start", event); $(options.appendTo).append(this.helper); this.helper.css({ "left": event.pageX, "top": event.pageY, "width": 0, "height": 0 }); if(options.autoRefresh){ this.refresh(); } this.selectees.filter(".ui-selected").each(function(){ var selectee=$.data(this, "selectable-item"); selectee.startselected=true; if(!event.metaKey&&!event.ctrlKey){ that._removeClass(selectee.$element, "ui-selected"); selectee.selected=false; that._addClass(selectee.$element, "ui-unselecting"); selectee.unselecting=true; that._trigger("unselecting", event, { unselecting: selectee.element }); }}); $(event.target).parents().addBack().each(function(){ var doSelect, selectee=$.data(this, "selectable-item"); if(selectee){ doSelect=(!event.metaKey&&!event.ctrlKey) || !selectee.$element.hasClass("ui-selected"); that._removeClass(selectee.$element, doSelect ? "ui-unselecting":"ui-selected") ._addClass(selectee.$element, doSelect ? "ui-selecting":"ui-unselecting"); selectee.unselecting = !doSelect; selectee.selecting=doSelect; selectee.selected=doSelect; if(doSelect){ that._trigger("selecting", event, { selecting: selectee.element }); }else{ that._trigger("unselecting", event, { unselecting: selectee.element }); } return false; }}); }, _mouseDrag: function(event){ this.dragged=true; if(this.options.disabled){ return; } var tmp, that=this, options=this.options, x1=this.opos[ 0 ], y1=this.opos[ 1 ], x2=event.pageX, y2=event.pageY; if(x1 > x2){ tmp=x2; x2=x1; x1=tmp; } if(y1 > y2){ tmp=y2; y2=y1; y1=tmp; } this.helper.css({ left: x1, top: y1, width: x2 - x1, height: y2 - y1 }); this.selectees.each(function(){ var selectee=$.data(this, "selectable-item"), hit=false, offset={}; if(!selectee||selectee.element===that.element[ 0 ]){ return; } offset.left=selectee.left + that.elementPos.left; offset.right=selectee.right + that.elementPos.left; offset.top=selectee.top + that.elementPos.top; offset.bottom=selectee.bottom + that.elementPos.top; if(options.tolerance==="touch"){ hit=(!(offset.left > x2||offset.right < x1||offset.top > y2 || offset.bottom < y1)); }else if(options.tolerance==="fit"){ hit=(offset.left > x1&&offset.right < x2&&offset.top > y1 && offset.bottom < y2); } if(hit){ if(selectee.selected){ that._removeClass(selectee.$element, "ui-selected"); selectee.selected=false; } if(selectee.unselecting){ that._removeClass(selectee.$element, "ui-unselecting"); selectee.unselecting=false; } if(!selectee.selecting){ that._addClass(selectee.$element, "ui-selecting"); selectee.selecting=true; that._trigger("selecting", event, { selecting: selectee.element }); }}else{ if(selectee.selecting){ if(( event.metaKey||event.ctrlKey)&&selectee.startselected){ that._removeClass(selectee.$element, "ui-selecting"); selectee.selecting=false; that._addClass(selectee.$element, "ui-selected"); selectee.selected=true; }else{ that._removeClass(selectee.$element, "ui-selecting"); selectee.selecting=false; if(selectee.startselected){ that._addClass(selectee.$element, "ui-unselecting"); selectee.unselecting=true; } that._trigger("unselecting", event, { unselecting: selectee.element }); }} if(selectee.selected){ if(!event.metaKey&&!event.ctrlKey&&!selectee.startselected){ that._removeClass(selectee.$element, "ui-selected"); selectee.selected=false; that._addClass(selectee.$element, "ui-unselecting"); selectee.unselecting=true; that._trigger("unselecting", event, { unselecting: selectee.element }); }} }}); return false; }, _mouseStop: function(event){ var that=this; this.dragged=false; $(".ui-unselecting", this.element[ 0 ]).each(function(){ var selectee=$.data(this, "selectable-item"); that._removeClass(selectee.$element, "ui-unselecting"); selectee.unselecting=false; selectee.startselected=false; that._trigger("unselected", event, { unselected: selectee.element }); }); $(".ui-selecting", this.element[ 0 ]).each(function(){ var selectee=$.data(this, "selectable-item"); that._removeClass(selectee.$element, "ui-selecting") ._addClass(selectee.$element, "ui-selected"); selectee.selecting=false; selectee.selected=true; selectee.startselected=true; that._trigger("selected", event, { selected: selectee.element }); }); this._trigger("stop", event); this.helper.remove(); return false; }}); var widgetsSortable=$.widget("ui.sortable", $.ui.mouse, { version: "1.12.1", widgetEventPrefix: "sort", ready: false, options: { appendTo: "parent", axis: false, connectWith: false, containment: false, cursor: "auto", cursorAt: false, dropOnEmpty: true, forcePlaceholderSize: false, forceHelperSize: false, grid: false, handle: false, helper: "original", items: "> *", opacity: false, placeholder: false, revert: false, scroll: true, scrollSensitivity: 20, scrollSpeed: 20, scope: "default", tolerance: "intersect", zIndex: 1000, activate: null, beforeStop: null, change: null, deactivate: null, out: null, over: null, receive: null, remove: null, sort: null, start: null, stop: null, update: null }, _isOverAxis: function(x, reference, size){ return(x >=reference)&&(x <(reference + size)); }, _isFloating: function(item){ return(/left|right/).test(item.css("float")) || (/inline|table-cell/).test(item.css("display")); }, _create: function(){ this.containerCache={}; this._addClass("ui-sortable"); this.refresh(); this.offset=this.element.offset(); this._mouseInit(); this._setHandleClassName(); this.ready=true; }, _setOption: function(key, value){ this._super(key, value); if(key==="handle"){ this._setHandleClassName(); }}, _setHandleClassName: function(){ var that=this; this._removeClass(this.element.find(".ui-sortable-handle"), "ui-sortable-handle"); $.each(this.items, function(){ that._addClass(this.instance.options.handle ? this.item.find(this.instance.options.handle) : this.item, "ui-sortable-handle" ); }); }, _destroy: function(){ this._mouseDestroy(); for(var i=this.items.length - 1; i >=0; i--){ this.items[ i ].item.removeData(this.widgetName + "-item"); } return this; }, _mouseCapture: function(event, overrideHandle){ var currentItem=null, validHandle=false, that=this; if(this.reverting){ return false; } if(this.options.disabled||this.options.type==="static"){ return false; } this._refreshItems(event); $(event.target).parents().each(function(){ if($.data(this, that.widgetName + "-item")===that){ currentItem=$(this); return false; }}); if($.data(event.target, that.widgetName + "-item")===that){ currentItem=$(event.target); } if(!currentItem){ return false; } if(this.options.handle&&!overrideHandle){ $(this.options.handle, currentItem).find("*").addBack().each(function(){ if(this===event.target){ validHandle=true; }}); if(!validHandle){ return false; }} this.currentItem=currentItem; this._removeCurrentsFromItems(); return true; }, _mouseStart: function(event, overrideHandle, noActivation){ var i, body, o=this.options; this.currentContainer=this; this.refreshPositions(); this.helper=this._createHelper(event); this._cacheHelperProportions(); this._cacheMargins(); this.scrollParent=this.helper.scrollParent(); this.offset=this.currentItem.offset(); this.offset={ top: this.offset.top - this.margins.top, left: this.offset.left - this.margins.left }; $.extend(this.offset, { click: { left: event.pageX - this.offset.left, top: event.pageY - this.offset.top }, parent: this._getParentOffset(), relative: this._getRelativeOffset() }); this.helper.css("position", "absolute"); this.cssPosition=this.helper.css("position"); this.originalPosition=this._generatePosition(event); this.originalPageX=event.pageX; this.originalPageY=event.pageY; (o.cursorAt&&this._adjustOffsetFromHelper(o.cursorAt)); this.domPosition={ prev: this.currentItem.prev()[ 0 ], parent: this.currentItem.parent()[ 0 ] }; if(this.helper[ 0 ]!==this.currentItem[ 0 ]){ this.currentItem.hide(); } this._createPlaceholder(); if(o.containment){ this._setContainment(); } if(o.cursor&&o.cursor!=="auto"){ body=this.document.find("body"); this.storedCursor=body.css("cursor"); body.css("cursor", o.cursor); this.storedStylesheet = $("").appendTo(body); } if(o.opacity){ if(this.helper.css("opacity")){ this._storedOpacity=this.helper.css("opacity"); } this.helper.css("opacity", o.opacity); } if(o.zIndex){ if(this.helper.css("zIndex")){ this._storedZIndex=this.helper.css("zIndex"); } this.helper.css("zIndex", o.zIndex); } if(this.scrollParent[ 0 ]!==this.document[ 0 ] && this.scrollParent[ 0 ].tagName!=="HTML"){ this.overflowOffset=this.scrollParent.offset(); } this._trigger("start", event, this._uiHash()); if(!this._preserveHelperProportions){ this._cacheHelperProportions(); } if(!noActivation){ for(i=this.containers.length - 1; i >=0; i--){ this.containers[ i ]._trigger("activate", event, this._uiHash(this)); }} if($.ui.ddmanager){ $.ui.ddmanager.current=this; } if($.ui.ddmanager&&!o.dropBehaviour){ $.ui.ddmanager.prepareOffsets(this, event); } this.dragging=true; this._addClass(this.helper, "ui-sortable-helper"); this._mouseDrag(event); return true; }, _mouseDrag: function(event){ var i, item, itemElement, intersection, o=this.options, scrolled=false; this.position=this._generatePosition(event); this.positionAbs=this._convertPositionTo("absolute"); if(!this.lastPositionAbs){ this.lastPositionAbs=this.positionAbs; } if(this.options.scroll){ if(this.scrollParent[ 0 ]!==this.document[ 0 ] && this.scrollParent[ 0 ].tagName!=="HTML"){ if(( this.overflowOffset.top + this.scrollParent[ 0 ].offsetHeight) - event.pageY < o.scrollSensitivity){ this.scrollParent[ 0 ].scrollTop = scrolled=this.scrollParent[ 0 ].scrollTop + o.scrollSpeed; }else if(event.pageY - this.overflowOffset.top < o.scrollSensitivity){ this.scrollParent[ 0 ].scrollTop = scrolled=this.scrollParent[ 0 ].scrollTop - o.scrollSpeed; } if(( this.overflowOffset.left + this.scrollParent[ 0 ].offsetWidth) - event.pageX < o.scrollSensitivity){ this.scrollParent[ 0 ].scrollLeft=scrolled = this.scrollParent[ 0 ].scrollLeft + o.scrollSpeed; }else if(event.pageX - this.overflowOffset.left < o.scrollSensitivity){ this.scrollParent[ 0 ].scrollLeft=scrolled = this.scrollParent[ 0 ].scrollLeft - o.scrollSpeed; }}else{ if(event.pageY - this.document.scrollTop() < o.scrollSensitivity){ scrolled=this.document.scrollTop(this.document.scrollTop() - o.scrollSpeed); }else if(this.window.height() -(event.pageY - this.document.scrollTop()) < o.scrollSensitivity){ scrolled=this.document.scrollTop(this.document.scrollTop() + o.scrollSpeed); } if(event.pageX - this.document.scrollLeft() < o.scrollSensitivity){ scrolled=this.document.scrollLeft(this.document.scrollLeft() - o.scrollSpeed ); }else if(this.window.width() -(event.pageX - this.document.scrollLeft()) < o.scrollSensitivity){ scrolled=this.document.scrollLeft(this.document.scrollLeft() + o.scrollSpeed ); }} if(scrolled!==false&&$.ui.ddmanager&&!o.dropBehaviour){ $.ui.ddmanager.prepareOffsets(this, event); }} this.positionAbs=this._convertPositionTo("absolute"); if(!this.options.axis||this.options.axis!=="y"){ this.helper[ 0 ].style.left=this.position.left + "px"; } if(!this.options.axis||this.options.axis!=="x"){ this.helper[ 0 ].style.top=this.position.top + "px"; } for(i=this.items.length - 1; i >=0; i--){ item=this.items[ i ]; itemElement=item.item[ 0 ]; intersection=this._intersectsWithPointer(item); if(!intersection){ continue; } if(item.instance!==this.currentContainer){ continue; } if(itemElement!==this.currentItem[ 0 ] && this.placeholder[ intersection===1 ? "next":"prev" ]()[ 0 ]!==itemElement && !$.contains(this.placeholder[ 0 ], itemElement) && (this.options.type==="semi-dynamic" ? !$.contains(this.element[ 0 ], itemElement) : true ) ){ this.direction=intersection===1 ? "down":"up"; if(this.options.tolerance==="pointer"||this._intersectsWithSides(item)){ this._rearrange(event, item); }else{ break; } this._trigger("change", event, this._uiHash()); break; }} this._contactContainers(event); if($.ui.ddmanager){ $.ui.ddmanager.drag(this, event); } this._trigger("sort", event, this._uiHash()); this.lastPositionAbs=this.positionAbs; return false; }, _mouseStop: function(event, noPropagation){ if(!event){ return; } if($.ui.ddmanager&&!this.options.dropBehaviour){ $.ui.ddmanager.drop(this, event); } if(this.options.revert){ var that=this, cur=this.placeholder.offset(), axis=this.options.axis, animation={}; if(!axis||axis==="x"){ animation.left=cur.left - this.offset.parent.left - this.margins.left + (this.offsetParent[ 0 ]===this.document[ 0 ].body ? 0 : this.offsetParent[ 0 ].scrollLeft ); } if(!axis||axis==="y"){ animation.top=cur.top - this.offset.parent.top - this.margins.top + (this.offsetParent[ 0 ]===this.document[ 0 ].body ? 0 : this.offsetParent[ 0 ].scrollTop ); } this.reverting=true; $(this.helper).animate(animation, parseInt(this.options.revert, 10)||500, function(){ that._clear(event); } ); }else{ this._clear(event, noPropagation); } return false; }, cancel: function(){ if(this.dragging){ this._mouseUp(new $.Event("mouseup", { target: null })); if(this.options.helper==="original"){ this.currentItem.css(this._storedCSS); this._removeClass(this.currentItem, "ui-sortable-helper"); }else{ this.currentItem.show(); } for(var i=this.containers.length - 1; i >=0; i--){ this.containers[ i ]._trigger("deactivate", null, this._uiHash(this)); if(this.containers[ i ].containerCache.over){ this.containers[ i ]._trigger("out", null, this._uiHash(this)); this.containers[ i ].containerCache.over=0; }} } if(this.placeholder){ if(this.placeholder[ 0 ].parentNode){ this.placeholder[ 0 ].parentNode.removeChild(this.placeholder[ 0 ]); } if(this.options.helper!=="original"&&this.helper && this.helper[ 0 ].parentNode){ this.helper.remove(); } $.extend(this, { helper: null, dragging: false, reverting: false, _noFinalSort: null }); if(this.domPosition.prev){ $(this.domPosition.prev).after(this.currentItem); }else{ $(this.domPosition.parent).prepend(this.currentItem); }} return this; }, serialize: function(o){ var items=this._getItemsAsjQuery(o&&o.connected), str=[]; o=o||{}; $(items).each(function(){ var res=($(o.item||this).attr(o.attribute||"id")||"") .match(o.expression||(/(.+)[\-=_](.+)/)); if(res){ str.push((o.key||res[ 1 ] + "[]") + "=" +(o.key&&o.expression ? res[ 1 ]:res[ 2 ])); }}); if(!str.length&&o.key){ str.push(o.key + "="); } return str.join("&"); }, toArray: function(o){ var items=this._getItemsAsjQuery(o&&o.connected), ret=[]; o=o||{}; items.each(function(){ ret.push($(o.item||this).attr(o.attribute||"id")||""); }); return ret; }, _intersectsWith: function(item){ var x1=this.positionAbs.left, x2=x1 + this.helperProportions.width, y1=this.positionAbs.top, y2=y1 + this.helperProportions.height, l=item.left, r=l + item.width, t=item.top, b=t + item.height, dyClick=this.offset.click.top, dxClick=this.offset.click.left, isOverElementHeight=(this.options.axis==="x")||(( y1 + dyClick) > t && (y1 + dyClick) < b), isOverElementWidth=(this.options.axis==="y")||(( x1 + dxClick) > l && (x1 + dxClick) < r), isOverElement=isOverElementHeight&&isOverElementWidth; if(this.options.tolerance==="pointer" || this.options.forcePointerForContainers || (this.options.tolerance!=="pointer" && this.helperProportions[ this.floating ? "width":"height" ] > item[ this.floating ? "width":"height" ]) ){ return isOverElement; }else{ return(l < x1 +(this.helperProportions.width / 2) && x2 -(this.helperProportions.width / 2) < r && t < y1 +(this.helperProportions.height / 2) && y2 -(this.helperProportions.height / 2) < b); }}, _intersectsWithPointer: function(item){ var verticalDirection, horizontalDirection, isOverElementHeight=(this.options.axis==="x") || this._isOverAxis(this.positionAbs.top + this.offset.click.top, item.top, item.height), isOverElementWidth=(this.options.axis==="y") || this._isOverAxis(this.positionAbs.left + this.offset.click.left, item.left, item.width), isOverElement=isOverElementHeight&&isOverElementWidth; if(!isOverElement){ return false; } verticalDirection=this._getDragVerticalDirection(); horizontalDirection=this._getDragHorizontalDirection(); return this.floating ? (( horizontalDirection==="right"||verticalDirection==="down") ? 2:1) :(verticalDirection&&(verticalDirection==="down" ? 2:1)); }, _intersectsWithSides: function(item){ var isOverBottomHalf=this._isOverAxis(this.positionAbs.top + this.offset.click.top, item.top +(item.height / 2), item.height), isOverRightHalf=this._isOverAxis(this.positionAbs.left + this.offset.click.left, item.left +(item.width / 2), item.width), verticalDirection=this._getDragVerticalDirection(), horizontalDirection=this._getDragHorizontalDirection(); if(this.floating&&horizontalDirection){ return(( horizontalDirection==="right"&&isOverRightHalf) || (horizontalDirection==="left"&&!isOverRightHalf)); }else{ return verticalDirection&&(( verticalDirection==="down"&&isOverBottomHalf) || (verticalDirection==="up"&&!isOverBottomHalf)); }}, _getDragVerticalDirection: function(){ var delta=this.positionAbs.top - this.lastPositionAbs.top; return delta!==0&&(delta > 0 ? "down":"up"); }, _getDragHorizontalDirection: function(){ var delta=this.positionAbs.left - this.lastPositionAbs.left; return delta!==0&&(delta > 0 ? "right":"left"); }, refresh: function(event){ this._refreshItems(event); this._setHandleClassName(); this.refreshPositions(); return this; }, _connectWith: function(){ var options=this.options; return options.connectWith.constructor===String ? [ options.connectWith ] : options.connectWith; }, _getItemsAsjQuery: function(connected){ var i, j, cur, inst, items=[], queries=[], connectWith=this._connectWith(); if(connectWith&&connected){ for(i=connectWith.length - 1; i >=0; i--){ cur=$(connectWith[ i ], this.document[ 0 ]); for(j=cur.length - 1; j >=0; j--){ inst=$.data(cur[ j ], this.widgetFullName); if(inst&&inst!==this&&!inst.options.disabled){ queries.push([ $.isFunction(inst.options.items) ? inst.options.items.call(inst.element) : $(inst.options.items, inst.element) .not(".ui-sortable-helper") .not(".ui-sortable-placeholder"), inst ]); }} }} queries.push([ $.isFunction(this.options.items) ? this.options.items .call(this.element, null, { options: this.options, item: this.currentItem }) : $(this.options.items, this.element) .not(".ui-sortable-helper") .not(".ui-sortable-placeholder"), this ]); function addItems(){ items.push(this); } for(i=queries.length - 1; i >=0; i--){ queries[ i ][ 0 ].each(addItems); } return $(items); }, _removeCurrentsFromItems: function(){ var list=this.currentItem.find(":data(" + this.widgetName + "-item)"); this.items=$.grep(this.items, function(item){ for(var j=0; j < list.length; j++){ if(list[ j ]===item.item[ 0 ]){ return false; }} return true; }); }, _refreshItems: function(event){ this.items=[]; this.containers=[ this ]; var i, j, cur, inst, targetData, _queries, item, queriesLength, items=this.items, queries=[ [ $.isFunction(this.options.items) ? this.options.items.call(this.element[ 0 ], event, { item: this.currentItem }) : $(this.options.items, this.element), this ] ], connectWith=this._connectWith(); if(connectWith&&this.ready){ for(i=connectWith.length - 1; i >=0; i--){ cur=$(connectWith[ i ], this.document[ 0 ]); for(j=cur.length - 1; j >=0; j--){ inst=$.data(cur[ j ], this.widgetFullName); if(inst&&inst!==this&&!inst.options.disabled){ queries.push([ $.isFunction(inst.options.items) ? inst.options.items .call(inst.element[ 0 ], event, { item: this.currentItem }) : $(inst.options.items, inst.element), inst ]); this.containers.push(inst); }} }} for(i=queries.length - 1; i >=0; i--){ targetData=queries[ i ][ 1 ]; _queries=queries[ i ][ 0 ]; for(j=0, queriesLength=_queries.length; j < queriesLength; j++){ item=$(_queries[ j ]); item.data(this.widgetName + "-item", targetData); items.push({ item: item, instance: targetData, width: 0, height: 0, left: 0, top: 0 }); }} }, refreshPositions: function(fast){ this.floating=this.items.length ? this.options.axis==="x"||this._isFloating(this.items[ 0 ].item) : false; if(this.offsetParent&&this.helper){ this.offset.parent=this._getParentOffset(); } var i, item, t, p; for(i=this.items.length - 1; i >=0; i--){ item=this.items[ i ]; if(item.instance!==this.currentContainer&&this.currentContainer && item.item[ 0 ]!==this.currentItem[ 0 ]){ continue; } t=this.options.toleranceElement ? $(this.options.toleranceElement, item.item) : item.item; if(!fast){ item.width=t.outerWidth(); item.height=t.outerHeight(); } p=t.offset(); item.left=p.left; item.top=p.top; } if(this.options.custom&&this.options.custom.refreshContainers){ this.options.custom.refreshContainers.call(this); }else{ for(i=this.containers.length - 1; i >=0; i--){ p=this.containers[ i ].element.offset(); this.containers[ i ].containerCache.left=p.left; this.containers[ i ].containerCache.top=p.top; this.containers[ i ].containerCache.width = this.containers[ i ].element.outerWidth(); this.containers[ i ].containerCache.height = this.containers[ i ].element.outerHeight(); }} return this; }, _createPlaceholder: function(that){ that=that||this; var className, o=that.options; if(!o.placeholder||o.placeholder.constructor===String){ className=o.placeholder; o.placeholder={ element: function(){ var nodeName=that.currentItem[ 0 ].nodeName.toLowerCase(), element=$("<" + nodeName + ">", that.document[ 0 ]); that._addClass(element, "ui-sortable-placeholder", className||that.currentItem[ 0 ].className) ._removeClass(element, "ui-sortable-helper"); if(nodeName==="tbody"){ that._createTrPlaceholder(that.currentItem.find("tr").eq(0), $("", that.document[ 0 ]).appendTo(element) ); }else if(nodeName==="tr"){ that._createTrPlaceholder(that.currentItem, element); }else if(nodeName==="img"){ element.attr("src", that.currentItem.attr("src")); } if(!className){ element.css("visibility", "hidden"); } return element; }, update: function(container, p){ if(className&&!o.forcePlaceholderSize){ return; } if(!p.height()){ p.height(that.currentItem.innerHeight() - parseInt(that.currentItem.css("paddingTop")||0, 10) - parseInt(that.currentItem.css("paddingBottom")||0, 10)); } if(!p.width()){ p.width(that.currentItem.innerWidth() - parseInt(that.currentItem.css("paddingLeft")||0, 10) - parseInt(that.currentItem.css("paddingRight")||0, 10)); }} };} that.placeholder=$(o.placeholder.element.call(that.element, that.currentItem)); that.currentItem.after(that.placeholder); o.placeholder.update(that, that.placeholder); }, _createTrPlaceholder: function(sourceTr, targetTr){ var that=this; sourceTr.children().each(function(){ $(" ", that.document[ 0 ]) .attr("colspan", $(this).attr("colspan")||1) .appendTo(targetTr); }); }, _contactContainers: function(event){ var i, j, dist, itemWithLeastDistance, posProperty, sizeProperty, cur, nearBottom, floating, axis, innermostContainer=null, innermostIndex=null; for(i=this.containers.length - 1; i >=0; i--){ if($.contains(this.currentItem[ 0 ], this.containers[ i ].element[ 0 ])){ continue; } if(this._intersectsWith(this.containers[ i ].containerCache)){ if(innermostContainer && $.contains(this.containers[ i ].element[ 0 ], innermostContainer.element[ 0 ])){ continue; } innermostContainer=this.containers[ i ]; innermostIndex=i; }else{ if(this.containers[ i ].containerCache.over){ this.containers[ i ]._trigger("out", event, this._uiHash(this)); this.containers[ i ].containerCache.over=0; }} } if(!innermostContainer){ return; } if(this.containers.length===1){ if(!this.containers[ innermostIndex ].containerCache.over){ this.containers[ innermostIndex ]._trigger("over", event, this._uiHash(this)); this.containers[ innermostIndex ].containerCache.over=1; }}else{ dist=10000; itemWithLeastDistance=null; floating=innermostContainer.floating||this._isFloating(this.currentItem); posProperty=floating ? "left":"top"; sizeProperty=floating ? "width":"height"; axis=floating ? "pageX":"pageY"; for(j=this.items.length - 1; j >=0; j--){ if(!$.contains(this.containers[ innermostIndex ].element[ 0 ], this.items[ j ].item[ 0 ]) ){ continue; } if(this.items[ j ].item[ 0 ]===this.currentItem[ 0 ]){ continue; } cur=this.items[ j ].item.offset()[ posProperty ]; nearBottom=false; if(event[ axis ] - cur > this.items[ j ][ sizeProperty ] / 2){ nearBottom=true; } if(Math.abs(event[ axis ] - cur) < dist){ dist=Math.abs(event[ axis ] - cur); itemWithLeastDistance=this.items[ j ]; this.direction=nearBottom ? "up":"down"; }} if(!itemWithLeastDistance&&!this.options.dropOnEmpty){ return; } if(this.currentContainer===this.containers[ innermostIndex ]){ if(!this.currentContainer.containerCache.over){ this.containers[ innermostIndex ]._trigger("over", event, this._uiHash()); this.currentContainer.containerCache.over=1; } return; } itemWithLeastDistance ? this._rearrange(event, itemWithLeastDistance, null, true) : this._rearrange(event, null, this.containers[ innermostIndex ].element, true); this._trigger("change", event, this._uiHash()); this.containers[ innermostIndex ]._trigger("change", event, this._uiHash(this)); this.currentContainer=this.containers[ innermostIndex ]; this.options.placeholder.update(this.currentContainer, this.placeholder); this.containers[ innermostIndex ]._trigger("over", event, this._uiHash(this)); this.containers[ innermostIndex ].containerCache.over=1; }}, _createHelper: function(event){ var o=this.options, helper=$.isFunction(o.helper) ? $(o.helper.apply(this.element[ 0 ], [ event, this.currentItem ])) : (o.helper==="clone" ? this.currentItem.clone():this.currentItem); if(!helper.parents("body").length){ $(o.appendTo!=="parent" ? o.appendTo : this.currentItem[ 0 ].parentNode)[ 0 ].appendChild(helper[ 0 ]); } if(helper[ 0 ]===this.currentItem[ 0 ]){ this._storedCSS={ width: this.currentItem[ 0 ].style.width, height: this.currentItem[ 0 ].style.height, position: this.currentItem.css("position"), top: this.currentItem.css("top"), left: this.currentItem.css("left") };} if(!helper[ 0 ].style.width||o.forceHelperSize){ helper.width(this.currentItem.width()); } if(!helper[ 0 ].style.height||o.forceHelperSize){ helper.height(this.currentItem.height()); } return helper; }, _adjustOffsetFromHelper: function(obj){ if(typeof obj==="string"){ obj=obj.split(" "); } if($.isArray(obj)){ obj={ left: +obj[ 0 ], top: +obj[ 1 ]||0 };} if("left" in obj){ this.offset.click.left=obj.left + this.margins.left; } if("right" in obj){ this.offset.click.left=this.helperProportions.width - obj.right + this.margins.left; } if("top" in obj){ this.offset.click.top=obj.top + this.margins.top; } if("bottom" in obj){ this.offset.click.top=this.helperProportions.height - obj.bottom + this.margins.top; }}, _getParentOffset: function(){ this.offsetParent=this.helper.offsetParent(); var po=this.offsetParent.offset(); if(this.cssPosition==="absolute"&&this.scrollParent[ 0 ]!==this.document[ 0 ] && $.contains(this.scrollParent[ 0 ], this.offsetParent[ 0 ])){ po.left +=this.scrollParent.scrollLeft(); po.top +=this.scrollParent.scrollTop(); } if(this.offsetParent[ 0 ]===this.document[ 0 ].body || (this.offsetParent[ 0 ].tagName && this.offsetParent[ 0 ].tagName.toLowerCase()==="html"&&$.ui.ie)){ po={ top: 0, left: 0 };} return { top: po.top +(parseInt(this.offsetParent.css("borderTopWidth"), 10)||0), left: po.left +(parseInt(this.offsetParent.css("borderLeftWidth"), 10)||0) };}, _getRelativeOffset: function(){ if(this.cssPosition==="relative"){ var p=this.currentItem.position(); return { top: p.top -(parseInt(this.helper.css("top"), 10)||0) + this.scrollParent.scrollTop(), left: p.left -(parseInt(this.helper.css("left"), 10)||0) + this.scrollParent.scrollLeft() };}else{ return { top: 0, left: 0 };}}, _cacheMargins: function(){ this.margins={ left:(parseInt(this.currentItem.css("marginLeft"), 10)||0), top:(parseInt(this.currentItem.css("marginTop"), 10)||0) };}, _cacheHelperProportions: function(){ this.helperProportions={ width: this.helper.outerWidth(), height: this.helper.outerHeight() };}, _setContainment: function(){ var ce, co, over, o=this.options; if(o.containment==="parent"){ o.containment=this.helper[ 0 ].parentNode; } if(o.containment==="document"||o.containment==="window"){ this.containment=[ 0 - this.offset.relative.left - this.offset.parent.left, 0 - this.offset.relative.top - this.offset.parent.top, o.containment==="document" ? this.document.width() : this.window.width() - this.helperProportions.width - this.margins.left, (o.containment==="document" ? (this.document.height()||document.body.parentNode.scrollHeight) : this.window.height()||this.document[ 0 ].body.parentNode.scrollHeight ) - this.helperProportions.height - this.margins.top ]; } if(!(/^(document|window|parent)$/).test(o.containment)){ ce=$(o.containment)[ 0 ]; co=$(o.containment).offset(); over=($(ce).css("overflow")!=="hidden"); this.containment=[ co.left +(parseInt($(ce).css("borderLeftWidth"), 10)||0) + (parseInt($(ce).css("paddingLeft"), 10)||0) - this.margins.left, co.top +(parseInt($(ce).css("borderTopWidth"), 10)||0) + (parseInt($(ce).css("paddingTop"), 10)||0) - this.margins.top, co.left +(over ? Math.max(ce.scrollWidth, ce.offsetWidth):ce.offsetWidth) - (parseInt($(ce).css("borderLeftWidth"), 10)||0) - (parseInt($(ce).css("paddingRight"), 10)||0) - this.helperProportions.width - this.margins.left, co.top +(over ? Math.max(ce.scrollHeight, ce.offsetHeight):ce.offsetHeight) - (parseInt($(ce).css("borderTopWidth"), 10)||0) - (parseInt($(ce).css("paddingBottom"), 10)||0) - this.helperProportions.height - this.margins.top ]; }}, _convertPositionTo: function(d, pos){ if(!pos){ pos=this.position; } var mod=d==="absolute" ? 1:-1, scroll=this.cssPosition==="absolute" && !(this.scrollParent[ 0 ]!==this.document[ 0 ] && $.contains(this.scrollParent[ 0 ], this.offsetParent[ 0 ])) ? this.offsetParent : this.scrollParent, scrollIsRootNode=(/(html|body)/i).test(scroll[ 0 ].tagName); return { top: ( pos.top + this.offset.relative.top * mod + this.offset.parent.top * mod - (( this.cssPosition==="fixed" ? -this.scrollParent.scrollTop() : (scrollIsRootNode ? 0:scroll.scrollTop())) * mod) ), left: ( pos.left + this.offset.relative.left * mod + this.offset.parent.left * mod - (( this.cssPosition==="fixed" ? -this.scrollParent.scrollLeft():scrollIsRootNode ? 0 : scroll.scrollLeft()) * mod) ) };}, _generatePosition: function(event){ var top, left, o=this.options, pageX=event.pageX, pageY=event.pageY, scroll=this.cssPosition==="absolute" && !(this.scrollParent[ 0 ]!==this.document[ 0 ] && $.contains(this.scrollParent[ 0 ], this.offsetParent[ 0 ])) ? this.offsetParent : this.scrollParent, scrollIsRootNode=(/(html|body)/i).test(scroll[ 0 ].tagName); if(this.cssPosition==="relative"&&!(this.scrollParent[ 0 ]!==this.document[ 0 ] && this.scrollParent[ 0 ]!==this.offsetParent[ 0 ])){ this.offset.relative=this._getRelativeOffset(); } if(this.originalPosition){ if(this.containment){ if(event.pageX - this.offset.click.left < this.containment[ 0 ]){ pageX=this.containment[ 0 ] + this.offset.click.left; } if(event.pageY - this.offset.click.top < this.containment[ 1 ]){ pageY=this.containment[ 1 ] + this.offset.click.top; } if(event.pageX - this.offset.click.left > this.containment[ 2 ]){ pageX=this.containment[ 2 ] + this.offset.click.left; } if(event.pageY - this.offset.click.top > this.containment[ 3 ]){ pageY=this.containment[ 3 ] + this.offset.click.top; }} if(o.grid){ top=this.originalPageY + Math.round(( pageY - this.originalPageY) / o.grid[ 1 ]) * o.grid[ 1 ]; pageY=this.containment ? (( top - this.offset.click.top >=this.containment[ 1 ] && top - this.offset.click.top <=this.containment[ 3 ]) ? top : (( top - this.offset.click.top >=this.containment[ 1 ]) ? top - o.grid[ 1 ]:top + o.grid[ 1 ])) : top; left=this.originalPageX + Math.round(( pageX - this.originalPageX) / o.grid[ 0 ]) * o.grid[ 0 ]; pageX=this.containment ? (( left - this.offset.click.left >=this.containment[ 0 ] && left - this.offset.click.left <=this.containment[ 2 ]) ? left : (( left - this.offset.click.left >=this.containment[ 0 ]) ? left - o.grid[ 0 ]:left + o.grid[ 0 ])) : left; }} return { top: ( pageY - this.offset.click.top - this.offset.relative.top - this.offset.parent.top + (( this.cssPosition==="fixed" ? -this.scrollParent.scrollTop() : (scrollIsRootNode ? 0:scroll.scrollTop()))) ), left: ( pageX - this.offset.click.left - this.offset.relative.left - this.offset.parent.left + (( this.cssPosition==="fixed" ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0:scroll.scrollLeft())) ) };}, _rearrange: function(event, i, a, hardRefresh){ a ? a[ 0 ].appendChild(this.placeholder[ 0 ]) : i.item[ 0 ].parentNode.insertBefore(this.placeholder[ 0 ], (this.direction==="down" ? i.item[ 0 ]:i.item[ 0 ].nextSibling)); this.counter=this.counter ? ++this.counter:1; var counter=this.counter; this._delay(function(){ if(counter===this.counter){ this.refreshPositions(!hardRefresh); }}); }, _clear: function(event, noPropagation){ this.reverting=false; var i, delayedTriggers=[]; if(!this._noFinalSort&&this.currentItem.parent().length){ this.placeholder.before(this.currentItem); } this._noFinalSort=null; if(this.helper[ 0 ]===this.currentItem[ 0 ]){ for(i in this._storedCSS){ if(this._storedCSS[ i ]==="auto"||this._storedCSS[ i ]==="static"){ this._storedCSS[ i ]=""; }} this.currentItem.css(this._storedCSS); this._removeClass(this.currentItem, "ui-sortable-helper"); }else{ this.currentItem.show(); } if(this.fromOutside&&!noPropagation){ delayedTriggers.push(function(event){ this._trigger("receive", event, this._uiHash(this.fromOutside)); }); } if(( this.fromOutside || this.domPosition.prev!==this.currentItem.prev().not(".ui-sortable-helper")[ 0 ] || this.domPosition.parent!==this.currentItem.parent()[ 0 ])&&!noPropagation){ delayedTriggers.push(function(event){ this._trigger("update", event, this._uiHash()); }); } if(this!==this.currentContainer){ if(!noPropagation){ delayedTriggers.push(function(event){ this._trigger("remove", event, this._uiHash()); }); delayedTriggers.push(( function(c){ return function(event){ c._trigger("receive", event, this._uiHash(this)); };}).call(this, this.currentContainer)); delayedTriggers.push(( function(c){ return function(event){ c._trigger("update", event, this._uiHash(this)); };}).call(this, this.currentContainer)); }} function delayEvent(type, instance, container){ return function(event){ container._trigger(type, event, instance._uiHash(instance)); };} for(i=this.containers.length - 1; i >=0; i--){ if(!noPropagation){ delayedTriggers.push(delayEvent("deactivate", this, this.containers[ i ])); } if(this.containers[ i ].containerCache.over){ delayedTriggers.push(delayEvent("out", this, this.containers[ i ])); this.containers[ i ].containerCache.over=0; }} if(this.storedCursor){ this.document.find("body").css("cursor", this.storedCursor); this.storedStylesheet.remove(); } if(this._storedOpacity){ this.helper.css("opacity", this._storedOpacity); } if(this._storedZIndex){ this.helper.css("zIndex", this._storedZIndex==="auto" ? "":this._storedZIndex); } this.dragging=false; if(!noPropagation){ this._trigger("beforeStop", event, this._uiHash()); } this.placeholder[ 0 ].parentNode.removeChild(this.placeholder[ 0 ]); if(!this.cancelHelperRemoval){ if(this.helper[ 0 ]!==this.currentItem[ 0 ]){ this.helper.remove(); } this.helper=null; } if(!noPropagation){ for(i=0; i < delayedTriggers.length; i++){ delayedTriggers[ i ].call(this, event); } this._trigger("stop", event, this._uiHash()); } this.fromOutside=false; return !this.cancelHelperRemoval; }, _trigger: function(){ if($.Widget.prototype._trigger.apply(this, arguments)===false){ this.cancel(); }}, _uiHash: function(_inst){ var inst=_inst||this; return { helper: inst.helper, placeholder: inst.placeholder||$([]), position: inst.position, originalPosition: inst.originalPosition, offset: inst.positionAbs, item: inst.currentItem, sender: _inst ? _inst.element:null };}}); var widgetsAccordion=$.widget("ui.accordion", { version: "1.12.1", options: { active: 0, animate: {}, classes: { "ui-accordion-header": "ui-corner-top", "ui-accordion-header-collapsed": "ui-corner-all", "ui-accordion-content": "ui-corner-bottom" }, collapsible: false, event: "click", header: "> li > :first-child, > :not(li):even", heightStyle: "auto", icons: { activeHeader: "ui-icon-triangle-1-s", header: "ui-icon-triangle-1-e" }, activate: null, beforeActivate: null }, hideProps: { borderTopWidth: "hide", borderBottomWidth: "hide", paddingTop: "hide", paddingBottom: "hide", height: "hide" }, showProps: { borderTopWidth: "show", borderBottomWidth: "show", paddingTop: "show", paddingBottom: "show", height: "show" }, _create: function(){ var options=this.options; this.prevShow=this.prevHide=$(); this._addClass("ui-accordion", "ui-widget ui-helper-reset"); this.element.attr("role", "tablist"); if(!options.collapsible&&(options.active===false||options.active==null)){ options.active=0; } this._processPanels(); if(options.active < 0){ options.active +=this.headers.length; } this._refresh(); }, _getCreateEventData: function(){ return { header: this.active, panel: !this.active.length ? $():this.active.next() };}, _createIcons: function(){ var icon, children, icons=this.options.icons; if(icons){ icon=$(""); this._addClass(icon, "ui-accordion-header-icon", "ui-icon " + icons.header); icon.prependTo(this.headers); children=this.active.children(".ui-accordion-header-icon"); this._removeClass(children, icons.header) ._addClass(children, null, icons.activeHeader) ._addClass(this.headers, "ui-accordion-icons"); }}, _destroyIcons: function(){ this._removeClass(this.headers, "ui-accordion-icons"); this.headers.children(".ui-accordion-header-icon").remove(); }, _destroy: function(){ var contents; this.element.removeAttr("role"); this.headers .removeAttr("role aria-expanded aria-selected aria-controls tabIndex") .removeUniqueId(); this._destroyIcons(); contents=this.headers.next() .css("display", "") .removeAttr("role aria-hidden aria-labelledby") .removeUniqueId(); if(this.options.heightStyle!=="content"){ contents.css("height", ""); }}, _setOption: function(key, value){ if(key==="active"){ this._activate(value); return; } if(key==="event"){ if(this.options.event){ this._off(this.headers, this.options.event); } this._setupEvents(value); } this._super(key, value); if(key==="collapsible"&&!value&&this.options.active===false){ this._activate(0); } if(key==="icons"){ this._destroyIcons(); if(value){ this._createIcons(); }} }, _setOptionDisabled: function(value){ this._super(value); this.element.attr("aria-disabled", value); this._toggleClass(null, "ui-state-disabled", !!value); this._toggleClass(this.headers.add(this.headers.next()), null, "ui-state-disabled", !!value); }, _keydown: function(event){ if(event.altKey||event.ctrlKey){ return; } var keyCode=$.ui.keyCode, length=this.headers.length, currentIndex=this.headers.index(event.target), toFocus=false; switch(event.keyCode){ case keyCode.RIGHT: case keyCode.DOWN: toFocus=this.headers[(currentIndex + 1) % length ]; break; case keyCode.LEFT: case keyCode.UP: toFocus=this.headers[(currentIndex - 1 + length) % length ]; break; case keyCode.SPACE: case keyCode.ENTER: this._eventHandler(event); break; case keyCode.HOME: toFocus=this.headers[ 0 ]; break; case keyCode.END: toFocus=this.headers[ length - 1 ]; break; } if(toFocus){ $(event.target).attr("tabIndex", -1); $(toFocus).attr("tabIndex", 0); $(toFocus).trigger("focus"); event.preventDefault(); }}, _panelKeyDown: function(event){ if(event.keyCode===$.ui.keyCode.UP&&event.ctrlKey){ $(event.currentTarget).prev().trigger("focus"); }}, refresh: function(){ var options=this.options; this._processPanels(); if(( options.active===false&&options.collapsible===true) || !this.headers.length){ options.active=false; this.active=$(); }else if(options.active===false){ this._activate(0); }else if(this.active.length&&!$.contains(this.element[ 0 ], this.active[ 0 ])){ if(this.headers.length===this.headers.find(".ui-state-disabled").length){ options.active=false; this.active=$(); }else{ this._activate(Math.max(0, options.active - 1)); }}else{ options.active=this.headers.index(this.active); } this._destroyIcons(); this._refresh(); }, _processPanels: function(){ var prevHeaders=this.headers, prevPanels=this.panels; this.headers=this.element.find(this.options.header); this._addClass(this.headers, "ui-accordion-header ui-accordion-header-collapsed", "ui-state-default"); this.panels=this.headers.next().filter(":not(.ui-accordion-content-active)").hide(); this._addClass(this.panels, "ui-accordion-content", "ui-helper-reset ui-widget-content"); if(prevPanels){ this._off(prevHeaders.not(this.headers)); this._off(prevPanels.not(this.panels)); }}, _refresh: function(){ var maxHeight, options=this.options, heightStyle=options.heightStyle, parent=this.element.parent(); this.active=this._findActive(options.active); this._addClass(this.active, "ui-accordion-header-active", "ui-state-active") ._removeClass(this.active, "ui-accordion-header-collapsed"); this._addClass(this.active.next(), "ui-accordion-content-active"); this.active.next().show(); this.headers .attr("role", "tab") .each(function(){ var header=$(this), headerId=header.uniqueId().attr("id"), panel=header.next(), panelId=panel.uniqueId().attr("id"); header.attr("aria-controls", panelId); panel.attr("aria-labelledby", headerId); }) .next() .attr("role", "tabpanel"); this.headers .not(this.active) .attr({ "aria-selected": "false", "aria-expanded": "false", tabIndex: -1 }) .next() .attr({ "aria-hidden": "true" }) .hide(); if(!this.active.length){ this.headers.eq(0).attr("tabIndex", 0); }else{ this.active.attr({ "aria-selected": "true", "aria-expanded": "true", tabIndex: 0 }) .next() .attr({ "aria-hidden": "false" }); } this._createIcons(); this._setupEvents(options.event); if(heightStyle==="fill"){ maxHeight=parent.height(); this.element.siblings(":visible").each(function(){ var elem=$(this), position=elem.css("position"); if(position==="absolute"||position==="fixed"){ return; } maxHeight -=elem.outerHeight(true); }); this.headers.each(function(){ maxHeight -=$(this).outerHeight(true); }); this.headers.next() .each(function(){ $(this).height(Math.max(0, maxHeight - $(this).innerHeight() + $(this).height())); }) .css("overflow", "auto"); }else if(heightStyle==="auto"){ maxHeight=0; this.headers.next() .each(function(){ var isVisible=$(this).is(":visible"); if(!isVisible){ $(this).show(); } maxHeight=Math.max(maxHeight, $(this).css("height", "").height()); if(!isVisible){ $(this).hide(); }}) .height(maxHeight); }}, _activate: function(index){ var active=this._findActive(index)[ 0 ]; if(active===this.active[ 0 ]){ return; } active=active||this.active[ 0 ]; this._eventHandler({ target: active, currentTarget: active, preventDefault: $.noop }); }, _findActive: function(selector){ return typeof selector==="number" ? this.headers.eq(selector):$(); }, _setupEvents: function(event){ var events={ keydown: "_keydown" }; if(event){ $.each(event.split(" "), function(index, eventName){ events[ eventName ]="_eventHandler"; }); } this._off(this.headers.add(this.headers.next())); this._on(this.headers, events); this._on(this.headers.next(), { keydown: "_panelKeyDown" }); this._hoverable(this.headers); this._focusable(this.headers); }, _eventHandler: function(event){ var activeChildren, clickedChildren, options=this.options, active=this.active, clicked=$(event.currentTarget), clickedIsActive=clicked[ 0 ]===active[ 0 ], collapsing=clickedIsActive&&options.collapsible, toShow=collapsing ? $():clicked.next(), toHide=active.next(), eventData={ oldHeader: active, oldPanel: toHide, newHeader: collapsing ? $():clicked, newPanel: toShow }; event.preventDefault(); if((clickedIsActive&&!options.collapsible) || (this._trigger("beforeActivate", event, eventData)===false)){ return; } options.active=collapsing ? false:this.headers.index(clicked); this.active=clickedIsActive ? $():clicked; this._toggle(eventData); this._removeClass(active, "ui-accordion-header-active", "ui-state-active"); if(options.icons){ activeChildren=active.children(".ui-accordion-header-icon"); this._removeClass(activeChildren, null, options.icons.activeHeader) ._addClass(activeChildren, null, options.icons.header); } if(!clickedIsActive){ this._removeClass(clicked, "ui-accordion-header-collapsed") ._addClass(clicked, "ui-accordion-header-active", "ui-state-active"); if(options.icons){ clickedChildren=clicked.children(".ui-accordion-header-icon"); this._removeClass(clickedChildren, null, options.icons.header) ._addClass(clickedChildren, null, options.icons.activeHeader); } this._addClass(clicked.next(), "ui-accordion-content-active"); }}, _toggle: function(data){ var toShow=data.newPanel, toHide=this.prevShow.length ? this.prevShow:data.oldPanel; this.prevShow.add(this.prevHide).stop(true, true); this.prevShow=toShow; this.prevHide=toHide; if(this.options.animate){ this._animate(toShow, toHide, data); }else{ toHide.hide(); toShow.show(); this._toggleComplete(data); } toHide.attr({ "aria-hidden": "true" }); toHide.prev().attr({ "aria-selected": "false", "aria-expanded": "false" }); if(toShow.length&&toHide.length){ toHide.prev().attr({ "tabIndex": -1, "aria-expanded": "false" }); }else if(toShow.length){ this.headers.filter(function(){ return parseInt($(this).attr("tabIndex"), 10)===0; }) .attr("tabIndex", -1); } toShow .attr("aria-hidden", "false") .prev() .attr({ "aria-selected": "true", "aria-expanded": "true", tabIndex: 0 }); }, _animate: function(toShow, toHide, data){ var total, easing, duration, that=this, adjust=0, boxSizing=toShow.css("box-sizing"), down=toShow.length && (!toHide.length||(toShow.index() < toHide.index())), animate=this.options.animate||{}, options=down&&animate.down||animate, complete=function(){ that._toggleComplete(data); }; if(typeof options==="number"){ duration=options; } if(typeof options==="string"){ easing=options; } easing=easing||options.easing||animate.easing; duration=duration||options.duration||animate.duration; if(!toHide.length){ return toShow.animate(this.showProps, duration, easing, complete); } if(!toShow.length){ return toHide.animate(this.hideProps, duration, easing, complete); } total=toShow.show().outerHeight(); toHide.animate(this.hideProps, { duration: duration, easing: easing, step: function(now, fx){ fx.now=Math.round(now); }}); toShow .hide() .animate(this.showProps, { duration: duration, easing: easing, complete: complete, step: function(now, fx){ fx.now=Math.round(now); if(fx.prop!=="height"){ if(boxSizing==="content-box"){ adjust +=fx.now; }}else if(that.options.heightStyle!=="content"){ fx.now=Math.round(total - toHide.outerHeight() - adjust); adjust=0; }} }); }, _toggleComplete: function(data){ var toHide=data.oldPanel, prev=toHide.prev(); this._removeClass(toHide, "ui-accordion-content-active"); this._removeClass(prev, "ui-accordion-header-active") ._addClass(prev, "ui-accordion-header-collapsed"); if(toHide.length){ toHide.parent()[ 0 ].className=toHide.parent()[ 0 ].className; } this._trigger("activate", null, data); }}); var widgetsMenu=$.widget("ui.menu", { version: "1.12.1", defaultElement: "